ОТДЫХ Api Spring boot с mongodb как получить json? - PullRequest
0 голосов
/ 04 октября 2019
@GetMapping("/getAccount")
public Account validateAccount(@RequestBody) {
}

Очень новый весенний ботинок. Файл моей учетной записи имеет 5+ значений: все строки, имя пользователя, пароль, идентификатор и некоторые другие вещи.

Учитывая это

{
    "username": "bob"
    "password": "password"
}

Он должен дать это с кодом ответа 200 OK

{
    "id": "45645646546"
    "username": "bob"
    "password": "password"
    "status": "Single"
    "filler": "filler" 
}

Однако я не уверен, как прочитать json "username" и "password" в моей функции validateAccount

Не очень связан с этим вопросом, но кто-нибудь знает, как отправить код ответав функции? Как .sendresponseheader (400) что-то в этом роде

Ответы [ 3 ]

2 голосов
/ 04 октября 2019
public class AccountDTO {
    @JsonIgnore
    private Long id;
    @NotNull
    private String username;
    @NotNull
    private String password;
    @JsonIgnore
    private String status;
    @JsonIgnore
    private String filler;

    // getters & setters
}

Вы можете создать DTO (объект транзакции данных), как показано выше. Вот ссылка на это wiki .

Следующий пользовательский ввод карты входа в этот DTO с помощью аннотации @RequestBody.

@RestController
public class AccountController {
    @GetMapping("/accounts")
    public ResponseEntity<Account> validateAccount(@RequestBody AccountDTO accountDTO) {
        return new ResponseEntity<>(accountService.validate(accountDTO), HttpStatus.OK);
    }
}

Или вы можете использовать

@RestController
public class AccountController {
    @GetMapping("/accounts")
    public Response validateAccount(@RequestBody AccountDTO accountDTO) {
        return new ResponseEntity().ok(accountService.validate(accountDTO));
    }
}

Пользовательский ввод будет преобразован из json в AccountDTO с использованием любого процессора JSON, который вы используете, скорее всего, это будет com.fasterxml.jackson.core.

Аннотации @JsonIgnore и @NotNull будутубедитесь, что используются только поля имени пользователя и пароля, а другие игнорируются при получении ввода от пользователя.

Вы можете передать этот DTO своим классам обслуживания и использовать что-то вроде findByUsername () в вашей бизнес-логике и вернуть заполненный AccountDTO, используяниже функция mapper или некоторые внешние библиотеки, такие как Model Mapper или MapStruct.

public toAccountDTO(Account account) {
    AccountDTO accountDTO = new AccountDTO();
    accountDTO.setUsername(account.getUsername());
    // and so on...
    return accountDTO;
}

И для вашего последнего запроса оберните возвращенный объект AccountDTO в оболочку ResponseEntity, чтобы предоставить правильный код ответа с вашей полезной нагрузкой. Вот ссылка на ResponseEntity Документы Java .

1 голос
/ 04 октября 2019
AccountDto.java
===============
class AccountDto{   
    private Long id;
    private String username;
    private String password;
    private String status;
    private String filler;

    //getters & setters
}



@GetMapping("/getAccount")
public ResponseEntity validateAccount(@RequestBody AccountDto accountDto) {
    return new ResponseEntity<>(accountServie.validate(accountDto),HttpStatus.OK);
}   

Вы можете выполнить пользовательские операции перед возвратом ответа. Взгляните Лучшая практика отдыха

0 голосов
/ 04 октября 2019

Для ответа json ничего конкретного просто пометьте класс @RestController.

Для @RequestBody просто используйте pojo для привязки значений

Для кода ошибки и состояния вы можете использовать ResponseEntity

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...