Невозможно сделать POST-запрос в Spring Boot - PullRequest
0 голосов
/ 21 ноября 2018

Я пытаюсь создать веб-сервисы при загрузке JAVA Spring с бэкэндом в качестве SQL Server 2012. Я следовал учебному руководству с этого веб-сайта https://www.callicoder.com/spring-boot-rest-api-tutorial-with-mysql-jpa-hibernate/.

Единственное изменение, которое я сделал, изменило приложение.свойства как

spring.datasource.url=jdbc:sqlserver://localhost;databaseName=SampleSpringDB
spring.datasource.username=sa
spring.datasource.password=sqlpassword
spring.datasource.driverClassName=com.microsoft.sqlserver.jdbc.SQLServerDriver
spring.jpa.show-sql=true
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.SQLServer2012Dialect
spring.jpa.hibernate.ddl-auto = create-drop

Tomcat не показывает никаких ошибок при запуске приложения.

При тестировании метода POST в Почтальоне я получаю ошибку в Почтальоне как

{
"timestamp": "2018-11-21T04:44:06.474+0000",
"status": 404,
"error": "Not Found",
"message": "No message available",
"path": "/api/notes/"
}

Код полностью скопирован с вышеупомянутого сайта.

Код для контроллера

    @RestController
    @RequestMapping(value="/api", produces="application/json")

public class NoteController {

@Autowired
NoteRepository noteRepository;

// Create Note
@PostMapping("/notes")
public Note createNote(@Valid @RequestBody Note note) {
    return noteRepository.save(note);
}

// Get all notes
@GetMapping("/notes")
public List<Note> getAllNotes() {
    return noteRepository.findAll();
}

// Get Single Note
@GetMapping("/notes/{id}")
public Note getNoteById(@PathVariable(value = "id") Long noteID) {
    return noteRepository.findById(noteID).orElseThrow(() -> new ResourceNotFoundException("Note", "id", noteID));
}

// Update Note
@PutMapping("/notes/{id}")
public Note updateNote(@PathVariable(value = "id") Long noteID, @RequestBody Note noteDetails) {
    Note note = noteRepository.findById(noteID)
            .orElseThrow(() -> new ResourceNotFoundException("Note", "id", noteID));
    note.setTitle(noteDetails.getTitle());
    note.setContent(noteDetails.getContent());

    Note updatedNote = noteRepository.save(note);
    return (updatedNote);
}

// Delete Note
@DeleteMapping("/notes/{id}")
public ResponseEntity<?> deleteNote(@PathVariable(value = "id") Long noteID) {
    Note note = noteRepository.findById(noteID)
            .orElseThrow(() -> new ResourceNotFoundException("Note", "id", noteID));
    noteRepository.delete(note);
    return ResponseEntity.ok().build();
}

}

POSTMAN POST url

localhost: 8080 / api / notes / body params as {"title": "test", "content": "test"}

Ответы [ 3 ]

0 голосов
/ 21 ноября 2018

Вы добавили соединитель sqlserver в pom.xml ?Если добавлено, пропустите этот ответ, и я его удалю.Я проверил ваш код на сервере MySQL, он работает нормально.

<dependency>
    <groupId>com.microsoft.sqlserver</groupId>
    <artifactId>sqljdbc4</artifactId>
    <version>4.0</version>
</dependency>
0 голосов
/ 23 ноября 2018

Эта проблема была исправлена ​​(странным образом). Я создал тот же проект с бэкэндом, что и MySQL, и протестировал сервис.Работало нормально.Затем я добавил зависимость SQL Server

<dependency>
    <groupId>com.microsoft.sqlserver</groupId>
    <artifactId>mssql-jdbc</artifactId>
    <version>6.1.0.jre8</version>
</dependency>

в pom.xml и изменил application.properties на

spring.datasource.url=jdbc:sqlserver://localhost;databaseName=SampleSpringDB
spring.datasource.username=sa
spring.datasource.password=password
spring.datasource.driverClassName=
com.microsoft.sqlserver.jdbc.SQLServerDriver spring.jpa.show-sql=true 
spring.jpa.properties.hibernate.dialect=
org.hibernate.dialect.SQLServer2012Dialect spring.jpa.hibernate.ddl-auto 
= create-drop

. Таким образом, все работало нормально.

0 голосов
/ 21 ноября 2018

Можете ли вы сделать быструю проверку, добавили ли вы @SpringBootApplication:

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class Application {

    public static void main(String[] args) throws Exception {
        SpringApplication.run(Application.class, args);
    }
}

@ SpringBootApplication включает в себя @ComponentScan, который сканирует находящийся в нем пакет и все дочерние пакеты.Ваш контроллер не может быть ни в одном из них.

...