调用Post API时出现以下错误。
405方法不允许
从角度上讲,我正在调用post API,如下所示。
private createFormUrl = `api/form/add`
public createForm(form: Form): Observable<string> {
return this.httpClient.post<any>(this.createFormUrl, form)
.pipe(catchError(this.handleError));
}
JAVA中的API
@RestController
@RequestMapping( value = "/api/form")
public class FormManagementController {
private FormManagementService formmanagementService;
@PostMapping(path = "/add",
consumes = MediaType.APPLICATION_JSON,
produces = MediaType.APPLICATION_JSON)
public ResponseEntity<?> createForm(@RequestBody(required = false) Form form) {
String respond = formmanagementService.createForm(form);
return ResponseEntity.status(getProperHttpStatus(respond)).build();
}
错误:
URL: http://localhost/api/form/add(从事邮递员工作)
我检查了一下,但是此API的任何地方都没有写GET。
我检查了许多关于stackoverflow的帖子,但是对我来说没有任何作用。 任何帮助将不胜感激。
答案 0 :(得分:0)
尝试在邮递员收藏中尝试使用
因此您可以隔离特定于角度的问题,您没有共享请求有效负载。如果在邮递员alos中不起作用,则进行代码更改。
尝试使用@RequestMapping(value =“ / add”,method = RequestMethod.POST)代替@PostMapping
答案 1 :(得分:0)
您需要使用 MediaType.APPLICATION_JSON_VALUE 来获取媒体类型字符串值。
@PostMapping(path = "/add",
consumes = MediaType.APPLICATION_JSON_VALUE,
produces = MediaType.APPLICATION_JSON_VALUE) {
...
}
答案 2 :(得分:0)
您最好尝试使用“ application / json”而不是MediaType.APPLICATION_JSON 再也不要诽谤任何东西。但是网上似乎有很多关于应该用作JSON MIME类型的话题。
该规范清楚地仅列出了JSON的一种MIME媒体类型,即“ application / json”(请参阅http://tools.ietf.org/html/rfc4627,“ 6。IANA注意事项”部分。
只需在消费和生产中都使用MIME类型为'application / json'的镜头即可。
@Robert
答案 3 :(得分:0)
很明显,响应头并不表示允许使用POST
。 allow方法标头应返回类似GET, POST, PUT, DELETE, OPTIONS, HEAD
'的内容。请像这样向控制器添加属性:@CrossOrigin(origins = "*", methods= "*")
。 methods
是将设置响应头的属性,该响应头列出了允许的方法。仅浏览器强制执行CORS。邮递员,卷曲不强制执行CORS。因此,乍一看这类错误并不明显。希望有帮助。