相关疑难解决方法(0)

在REST应用程序中抛出BindException而不是MethodArgumentNotValidException

我有一个简单的Spring Rest Controller和一些验证.我的理解是验证失败会抛出MethodArgumentNotValidException.但是,我的代码抛出了BindException.在调试消息中,我还看到应用程序返回null ModelAndView.

为什么Rest Controller会抛出BindException或返回null ModelAndView?

注意:我正在使用curl测试我的Web应用程序并进行HTTP POST

curl -X POST http://localhost:8080/tasks
Run Code Online (Sandbox Code Playgroud)

我故意省略"name"参数,这是一个标有@NotNull和@NotBlank注释的必填字段.

我的控制器:

@RestController
public class TasksController {

    private static Logger logger = Logger.getLogger(TasksController.class);

    @Autowired
    private MessageSource messageSource;

    @Autowired
    private Validator validator;

    @InitBinder
    protected void initBinder(WebDataBinder binder){
        binder.setValidator(this.validator);
    }         


    @RequestMapping(value = "/tasks", method = RequestMethod.POST)
    public Task createTask(@Valid TasksCommand tasksCommand){

        Task task = new Task();
        task.setName(tasksCommand.getName());
        task.setDue(tasksCommand.getDue());
        task.setCategory(tasksCommand.getCategory());

        return task;
    }
}
Run Code Online (Sandbox Code Playgroud)

我的"命令"类(包含验证注释)

public class TasksCommand {

    @NotBlank
    @NotNull
    private String name;

    private Calendar due;

    private String category; …
Run Code Online (Sandbox Code Playgroud)

java rest spring exceptionhandler

9
推荐指数
1
解决办法
3338
查看次数

Bash:警告:here-document在由文件结尾分隔的行(想要'EOF')

bash中的以下函数会出现标题中提到的错误.当最终EOF不在行的开头时,通常会出现错误.

EOF是在开始,所以我看不出有什么问题.进一步在脚本(未显示)中还有其他here-docs,它们可以工作.

add_testuser()
{
    kadmin -p admin -q addprinc test
    cat <<EOF > ~/test.ldif
dn: cn=test,ou=groups,dc=${ARRAY[1]},dc=${ARRAY[2]}
cn: test
gidNumber: 20001
objectClass: top
objectClass: posixGroup

dn: uid=test,ou=people,dc=${ARRAY[1]},dc=${ARRAY[2]}
uid: test
uidNumber: 20001
gidNumber: 20001
cn: First_name
sn: Last_name
objectClass: top
objectClass: person
objectClass: posixAccount
objectClass: shadowAccount
loginShell: /bin/bash
homeDirectory: /home/test
userPassword: {CRYPT}*
EOF 

    ldapadd -Qf ~/test.ldif
    kdestroy; kinit test
    klist
    ldapwhoami
}
Run Code Online (Sandbox Code Playgroud)

bash heredoc eof

6
推荐指数
1
解决办法
2万
查看次数

如何在cron中调用API?

我是新手,我有一个项目需要向用户发送每日提醒。我看到您可以使用 cron 作业来做到这一点。但是,我需要调用具有每日提醒功能的 API。此 API 是外部 API。我怎么做?

UPATE: 我需要调用 API,然后获取响应并每天向用户发送电子邮件。

php cron

5
推荐指数
1
解决办法
1万
查看次数

PHP 脚本中的 PHP POST curl 终端命令

我在 StackOverflow 的答案中找到了想要如何将数据发布到另一个网址的信息。

但是,我希望在我的 php Web 脚本中执行此命令,而不是从终端执行。从查看curl文档来看,我认为它应该是这样的:

<?php 

$url = "http://myurl.com";
$myjson = "{\"column1\":\"1\",\"colum2\":\"2\",\"column3\":\"3\",\"column4\":\"4\",\"column5\":\"5\",\"column6\":\"6\"}";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST, TRUE);
curl_setopt($ch, CURLOPT_POSTFIELDS, $myjson);
curl_close($ch);
?>
Run Code Online (Sandbox Code Playgroud)

最好的方法是什么?

当前正在运行的终端命令是:

curl -X POST -H "Content-Type: application/json" -d '{"column1":"1","colum2":"2","column3":"3","column4":"4","column5":"5","column6":"6"}' https://myurl.com
Run Code Online (Sandbox Code Playgroud)

php post curl

4
推荐指数
1
解决办法
3798
查看次数

Powershell:将json字符串传递给curl

我正在尝试使用curl将一个来自powershell脚本的JSON字符串传递给build.phonegap.com api.
根据phonegap的论坛,当在Windows机器上运行时,JSON数据必须格式化为:

curl.exe -ku user@email:mypass -X PUT -d "data={\"password\":"\keypass\"}" https://build.phonegap.com/api/v1/key
Run Code Online (Sandbox Code Playgroud)


实际上,从命令行调用时,这确实运行良好.
但是,当我尝试在powershell脚本中调用它时,双引号似乎被剥离.

到目前为止,我尝试过:

  • 将JSON放在单引号字符串中:
    curl.exe -ku user@email:mypass -X PUT -d '"data={\"password\":\"keypass\"}"'  https://build.phonegap.com/api/v1/key
  • 将JSON放在单引号字符串中,而不使用DOS转义反斜杠:
    curl.exe -ku user@email:mypass -X PUT -d '"data={"password":"keypass"}"'  https://build.phonegap.com/api/v1/key
  • 将JSON放在单引号字符串中,转义双引号和反斜杠(带有反斜杠的DOS样式):
    curl.exe -ku user@email:mypass -X PUT -d '\"data={\\\"password\\\":\\\"keypass\\\"}\"'  https://build.phonegap.com/api/v1/key
  • 将JSON放在双引号字符串中,使用powershell返回刻度字符'转义双引号:
    curl.exe -ku user@email:mypass -X PUT -d "`"data={\`"password\`":\`"build*2014`\`"}`""  https://build.phonegap.com/api/v1/key



知道怎么做到这一点?

谢谢你的时间,科恩

powershell curl

4
推荐指数
2
解决办法
6654
查看次数

如何验证IIIF清单?

我试图在我的本地查看器中显示另一个IIIF服务器的清单,但它似乎没有工作.如何确认清单有效/未损坏?

validation iiif

3
推荐指数
1
解决办法
293
查看次数

Powershell&Curl - 在单引号JSON体内使用变量

我目前正在尝试使用Powershell和Curl在我们的Zendesk票务系统中自动创建新用户.我遇到的问题是curl json体被单引号括起来,我需要引用该体内的变量.这是我有的:

$Firstname = "Test"
$Lastname = "User"
$email= 'user@test.org'   
curl.exe https://mydomain.zendesk.com/api/v2/users.json -H "Content-Type: application/json" -X POST -d '{\"user\": {\"name\": \"$Firstname $Lastname\", \"email\": \"$email\"}}' -v -u myuser:mypass
Run Code Online (Sandbox Code Playgroud)

如果我在json中键入常规文本值,这可以正常工作,但是如何让它识别变量$ Firstname,$ Lastname和$ email?

powershell json curl

2
推荐指数
1
解决办法
4350
查看次数

REST API,何时使用@PathParam,@ QueryParam,@ RequestBody和/或@RequestHeader

如果在何时/何时不使用上述将信息传递给REST调用的方法,我一直试图找到答案.

我一直在寻找各地,但每个帖子只讨论两种列出的方法之间的差异,或3,而不是所有4.

java rest spring restful-architecture spring-boot

2
推荐指数
1
解决办法
4156
查看次数

使用curl时Github API错误“解析JSON时出现问题”但与Postman一起工​​作正常

我正在尝试使用 Github 的 API 创建一个版本。

我的请求在 Postman 中工作正常,但无论我尝试什么,curl 总是失败,包括如果我只是使用 Postman 将 Postman 请求转换为curl。

这是我的 Postman POST 请求的正文:

{
    "tag_name": "4.2.0",
    "target_commitish": "master",
    "name": "4.2.0",
    "body": "test"
}
Run Code Online (Sandbox Code Playgroud)

我已经包含了一个“Basic”类型的授权标头,我在其中输入我的用户名和为此目的创建的令牌。
我正在执行针对 的请求https://api.github.com/repos/<myUsername>/<myRepo>/releases

正如我所说 - 它工作正常,但是当我将其转换为 curl 时,我收到错误“解析 JSON 时出现问题”。

翻译后的curl命令是:

curl --location --request POST 'https://api.github.com/repos/<myUsername>/<myRepo>/releases' \
--header 'Authorization: Basic <someHashOrSomething>' \
--header 'Content-Type: application/json' \
--data-raw '{
    "tag_name": "4.2.0",
    "target_commitish": "master",
    "name": "4.2.0",
    "body": "test"
}'
Run Code Online (Sandbox Code Playgroud)

我将其重新格式化curl --location --request POST 'https://api.github.com/repos/<myUsername>/<myRepo>/releases' --header 'Authorization: Basic <someHashOrSomething>' --header 'Content-Type: application/json' --data-raw …

json curl github github-api

2
推荐指数
1
解决办法
5557
查看次数