>

스프링 부트를 백엔드로, Angular를 프론트 엔드로, 그래프 지향 NoSQL 데이터베이스 인 Neo4j 데이터베이스로 응용 프로그램을 만들려고합니다. 내 문제는 NodeEntity에서 복잡한 데이터를 사용하는 방법을 모른다는 것입니다. 프로그래밍중인 응용 프로그램은 Angular (프론트 엔드)로 만든 앱이 스프링 부트로 만든 백엔드의 Rest API에 의해 데이터를 삽입하고 소비하는 마이크로 서비스 아키텍처를 기반으로합니다.이 서버는 데이터를 서버에 저장합니다 Neo4j 데이터베이스에서 인스턴스 실행 여기 내가하고있는 일의 예가 있습니다. application.properties파일

입니다.

spring.data.neo4j.uri=bolt://localhost spring.data.neo4j.username=neo4j spring.data.neo4j.password=secret

이것은 도메인 모델의 예시 클래스입니다 :

@NodeEntity
public class Contact {
    @Id
    Long id;
    String name;
    String address;
    String city;
    String phone;
    String email;
    public Contact(String name, String address, String city, String phone, String email) {
        this.name = name;
        this.address = address;
        this.city = city;
        this.phone = phone;
        this.email = email;
    }
//get and set
    }

여러분이 볼 수 있듯이 속성이 다른 간단한 클래스이지만 속성에 따라 속성, 도시, 거리, 국가, #, ...

저의 저장소는 다음과 같이 간단합니다 :

public interface ContactRepository extends Neo4jRepository<Contact,Long>{
    Collection<Contact> findByName(String name);
    @Override
    void delete(Contact deleted);
}

ContactService 클래스는 ContactRepository 처리를 담당합니다

@Service
public class ContactService {
    @Autowired
    private final ContactRepository contactRepository;
    public ContactService(ContactRepository contactRepository) {
        this.contactRepository = contactRepository;
    }
    @Transactional(readOnly = true)
    public Iterable<Contact> contact() {
        return contactRepository.findAll();
    }
    @Transactional(readOnly = true)
    public Contact show(Long id) {
        return contactRepository.findById(id).get();
    }
    public Contact save(Contact contact) {
        contactRepository.save(contact);
        return contact;
    }
    public Contact update(Long id, Contact contact) {
        Contact c = contactRepository.findById(id).get();
        if (contact.getName() != null)
            c.setName(contact.getName());
        if (contact.getAddress() != null)
            c.setAddress(contact.getAddress());
        if (contact.getPhone() != null)
            c.setPhone(contact.getPhone());
        if (contact.getEmail() != null)
            c.setEmail(contact.getEmail());
        contactRepository.save(c);
        return contact;
    }
    public String delete(Long id) {
        Contact contact = contactRepository.findById(id).get() ;
        contactRepository.delete(contact);
        return "";
    }
}

마지막으로 Rest API를 담당하는 컨트롤러

@RestController
public class ContactController {
    @Autowired
    private ContactService contactService;
    @RequestMapping(method = RequestMethod.GET,value = "/contacts")
    public Iterable<Contact> contact(){
        return contactService.contact();
    }
    @RequestMapping(method = RequestMethod.POST,value = "/contacts")
    public Contact save(@RequestBody Contact contact){
        return contactService.save(contact);
    }
    @RequestMapping(method = RequestMethod.GET,value = "/contacts/{id}")
    public Contact show(@PathVariable Long id){
        return contactService.show(id);
    }
    @RequestMapping(method = RequestMethod.PUT,value = "/contacts/{id}")
    public Contact update(@PathVariable Long id,@RequestBody Contact contact){
       return contactService.update(id,contact);
    }
    @RequestMapping(method = RequestMethod.DELETE,value = "/contacts/{id}")
    public String delete(@PathVariable Long id){
        contactService.delete(id);
        return "";
    }
}

API 작동 방식을 테스트하기 위해 다음 명령이 사용됩니다

curl -i -H "Accept: application/json" localhost:8080/contacts

결과

HTTP/1.1 200 Content-Type: application/json;charset=UTF-8 Transfer-Encoding: chunked Date: Mon, 05 Jul 2018 12:14:39 GMT []

데이터베이스에 새 연락처를 삽입하려면

curl -i -X POST -H "Content-Type: application/json" -d '{"name":"John Doe","address":"Jl. Cipaganti No.112","city":"Bandung","phone":"0811223112233","email":"[email protected]"}' localhost:8080/contacts

결과로 반환

HTTP/1.1 200 Content-Type: application/json;charset=UTF-8 Transfer-Encoding: chunked Date: Tue, 06 Jul 2018 02:59:00 GMT {"id":"5a7919f4b9d4f13c2cb6f539","name":"John Doe","address":"Jl. Cipaganti No.112","city":"Bandung","phone":"0811223112233","email":"[email protected]"}

많은 튜토리얼을 보았지만 Rest API를 사용하는 방법만으로 데이터를 삽입하는 방법을 제공하지 않기 때문에 NodeEntity 클래스의 주소 속성을 변경하려고 할 때 문제가 발생합니다. 데이터베이스에서 노드 (NodeEntity)를 나타내는 클래스 인 주소 속성을 컨택 클래스에 추가하려면 어떻게해야합니까? 주소 속성이 도시, 거리, 국가, #, ...와 같은 여러 속성을 가진 클래스이기 때문에 curl 명령을 실행하여 API가 올바르게 작동 함을 어떻게 증명할 수 있습니까?

나를 도와 주셔서 감사합니다.

  • 이전 cURL을 ASPNet으로 변환
  • 다음 sql - 마지막 달의 값만 선택