如何仅使用CRUD POST方法获取数据?

时间:2019-01-24 13:02:04

标签: spring spring-boot

我已经开发了Small Spring boot Rest api应用程序。我可以获取数据或创建新记录并使用分页和排序进行搜索。

现在我正在寻找在正文中提供输入数据以获取数据,而不是在GET方法中提供URL。此方法也是默认功能吗?请告知。

public interface CodeTextRepository extends PagingAndSortingRepository<CodeText, Long> { 
}

如何编写POST方法以仅获取数据?

http://localhost:8080/api/code

method : POST
{
"code":1
}

2 个答案:

答案 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。一定有您要这样做的原因,但是您应该尝试以其他方式解决该原始问题!