我已经开发了Small Spring boot Rest api应用程序。我可以获取数据或创建新记录并使用分页和排序进行搜索。
现在我正在寻找在正文中提供输入数据以获取数据,而不是在GET方法中提供URL。此方法也是默认功能吗?请告知。
public interface CodeTextRepository extends PagingAndSortingRepository<CodeText, Long> {
}
如何编写POST方法以仅获取数据?
http://localhost:8080/api/code
method : POST
{
"code":1
}
答案 0 :(得分:0)
如果我对您的理解正确,那么您想创建一个controller
,它将在{ "code": 1 }
方法中将模型作为主体参数(POST
)进行处理。
为此,您可以创建一个如下所示的控制器(以我插入的伪代码为例):
@RestController
@RequestMapping(value = "/api/code")
public class CodeTextController {
private CodeTextRepository codeTextRepository;
// constructor injection
public CodeTextController(CodeTextRepository codeTextRepository) {
this.codeTextRepository = codeTextRepository;
}
@PostMapping
public CodeText postCodeText(@RequestBody CodeTextRequest codeTextRequest) {
// some code to get from the DB
return codeText;
}
}
public class CodeTextRequest {
private int code;
// getters and setters
}
答案 1 :(得分:0)
只需将APIException
标头添加到请求中,例如
<body>
<section class="memory-game">
<div class="memory-card" id="{{images[0].imageName}}">
<img class="front-face" src="/src/assets/images/cards/{{images[0].imageName}}" alt="{{images[0].imageName}}" />
<img class="back-face" src="/src/assets/images/cards/savanna.jpg" alt="savanna" />
</div>
public images: ImageModel[];
constructor(private loginService: LoginService, private imageService: ImagesService , private router: Router) { }
ngOnInit() {
const observable = this.imageService.getAllPhotos();
observable.subscribe(images => {
this.images = images.concat(images);
console.log(this.images);
this.images = this.shuffleArr(this.images);
console.log(this.images);
this.checkIfLogin();
this.game();
});
如果Accept
中的accept: application/json
标志被显式设置为true或未设置标志并且请求,则Spring Data-Rest将在POST
请求之后返回正文。有一个returnBodyOnCreate
标头。
您可以在配置期间直接设置标志,也可以通过application.properties进行设置:
RepositoryRestConfiguration
您也可以将其单独设置以进行更新:
Accept
----编辑
也许我误解了你的问题。如果您只是想使用POST方法获取现有数据,则完全不要这样做!那不再是REST API。一定有您要这样做的原因,但是您应该尝试以其他方式解决该原始问题!