Используйте CRNK без хранилища - PullRequest
0 голосов
/ 05 октября 2019

Мы стандартизировали использование JSON: API для наших конечных точек REST;не все наши данные вращаются вокруг репозиториев, и кажется, что CRNK требует репозитории для работы.

Это правильно?

Пример

Iнаписал очень простой пример Spring Boot 2.1.9 с одним контроллером и включенным в него CRNK, но когда я попадаю в свой контроллер, я не получаю ожидаемый вывод JSON: API.

Пожалуйста, сохраняйтев виду, я только начинаю смотреть на CRNK, и это просто приложение типа "привет мир", которое я тестирую с

Вот мой пример

package com.example.crnkdemo;

import org.springframework.web.bind.annotation.*;

@RestController
@RequestMapping("/test/v1.0")
public class Controller {
    @GetMapping(value = "/{country}", produces = "application/vnd.api+json")
    public Country test1(@PathVariable String country, @RequestParam(name = "filter[region]", required = false) String filter) {
        return new Country(country, filter);
    }
}

Страна - это просто фиктивный класс, который я создал:

package com.example.crnkdemo;

import io.crnk.core.resource.annotations.JsonApiId;
import io.crnk.core.resource.annotations.JsonApiResource;

@JsonApiResource(type = "country")
@AllArgsConstructor
@Data
public class Country {

    @JsonApiId
    private String country;
    private String region;

Результаты

Но когда я использую следующий URL http://localhost:8080/test/v1.0/US?filter[region]=northeastЯ получаю

{
    "country": "US",
    "region":"northeast"
}

Я бы ожидал, что результат типа JSON API

{
  "data": {
    "type": "country",
    "id": "US",
    "attributes": {
      "region": "northeast"
    }
}

Спасибо!

1 Ответ

0 голосов
/ 06 ноября 2019

Я столкнулся с подобной проблемой, и проблема заключалась в том, что я получил io.crnk:crnk-format-plain-json в моих зависимостях (просто скопированных из примера приложения), которые изменяют способ, которым выглядят ответы (не-JSON-API). Итак, сначала посмотрите на вашу конфигурацию maven / gradle.

...