Угловой запрос POST для остальных серверов отображает ноль, база данных MySql отображает правильные данные - PullRequest
0 голосов
/ 03 июня 2019

Я хочу отправить данные с моего внешнего интерфейса Angular на мой сервер Glassfish Rest и через сервер rest в мою базу данных. Когда я отправляю запрос POST, данные корректно отправляются в базу данных, но когда я проверяю свой REST-сервер, я вижу только «ноль». Как мне это решить?

Я приведу несколько изображений из того, что вижу в комментариях.

Frontend:

 public codeValue: string;

  codeList = [
    { restaurantId: 1, restaurantName: 'Mcdonalds', restaurantAdres: 'Kalverstraat 5' },
    { restaurantId: 2, restaurantName: 'Kentucky Fried Chicken', restaurantAdres: 'Kalverstraat 4' },
    { restaurantId: 3, restaurantName: 'Burger King', restaurantAdres: 'Kalverstraat 3' },
    { restaurantId: 4, restaurantName: 'Dominos pizza', restaurantAdres: 'Kalverstraat 2' },
    { restaurantId: 5, restaurantName: 'New York Pizza', restaurantAdres: 'Kalverstraat 1' }
  ];


  @ViewChild('f') form: NgForm;
  restaurant = {
    restaurantId: " ",
    restaurantName: " ",
    restaurantAdres: " "
  };
  httpOptions = {
    headers: new HttpHeaders({
      'Content-Type':  'application/json',
      'Authorization': 'my-auth-token'
    })
  };
  private string1: string;


  constructor(private http: HttpClient) {
  }

  ngOnInit() {
  }

  public saveCode(e): void {
    let restaurantName = e.target.value;
    let list = this.codeList.filter(x => x.restaurantName === restaurantName)[0];


    this.restaurant.restaurantId = list.restaurantId.toString();
    this.restaurant.restaurantName = list.restaurantName;
    this.restaurant.restaurantAdres = list.restaurantAdres;

    console.log(list.restaurantId);
    console.log(list.restaurantName);
    console.log(list.restaurantAdres);



    const httpOptions = {
      headers: new HttpHeaders({
        'Content-Type':  'application/json'
      })
    };

    const data = {
      restaurantId: list.restaurantId.toString(),
      restaurantName: list.restaurantName,
      restaurantAdres: list.restaurantAdres
    };

    console.log(data)


    this.http.post('http://localhost:8080/aquadine-jee/resources/restaurant',
      JSON.parse(JSON.stringify(data)) , httpOptions)


      .subscribe( // subscribe to observable http.post
        res => {
          console.log("response" + " " + res); // log results otherwise log error
        },
        err => {
          console.log('Error occured');
        }
      );
  }

Backend:

package nl.aquadine.model;

import javax.persistence.*;
import javax.validation.constraints.NotBlank;
import java.io.Serializable;

/**
 * @author Fethi
 */

@Entity
@Table(name = "restaurant")
@NamedQueries({
        @NamedQuery(name = "Restaurant.findOne", query = "select m from Restaurant m where m.id = :id"),
        @NamedQuery(name = "Restaurant.getAll", query = "select m from Restaurant m")
})
public class Restaurant implements Serializable {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Integer id;



    //    @NotBlank
    String restaurantName;


    //    @NotBlank
    String restaurantAdres;


    int restaurantId;

    public Restaurant(){

    }


    public Restaurant(int restaurantId, String restaurantName, String restaurantAdres) {
        this.restaurantId = restaurantId;
        this.restaurantName = restaurantName;
        this.restaurantAdres = restaurantAdres;
    }


    public Integer getId() {
        return id;
    }

    public String getRestaurantName() {
        return restaurantName;
    }

    public String getRestaurantAdres() {
        return restaurantAdres;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public void setRestaurantName(String restaurantName) {
        this.restaurantName = restaurantName;
    }

    public void setRestaurantAdres(String restaurantAdres) {
        this.restaurantAdres = restaurantAdres;
    }


    public int getRestaurantId() {
        return restaurantId;
    }

    public void setRestaurantId(int restaurantId) {
        this.restaurantId = restaurantId;
    }
}

Repository:


public List<Restaurant> getAllRestaurants() {
        EntityManager em = entityManagerFactory.createEntityManager();
        List<Restaurant> restaurants = em.createQuery("SELECT r FROM Restaurant r").getResultList();
        em.close();
        return restaurants;
    }

    @Override
    public Restaurant find(Integer id) {
        EntityManager em = getEntityManager();
        Restaurant restaurant = em.find(Restaurant.class, id);
        em.close();
        return restaurant;
    }

    @Override
    public Restaurant save(Restaurant restaurant) {
        EntityManager em = getEntityManager();

        em.getTransaction().begin();
        em.persist(restaurant);
        em.getTransaction().commit();
        em.close();

        return restaurant;


    }

    @Override
    public Restaurant update(Restaurant restaurant) {
return null;
    }

    @Override
    public Restaurant delete(Restaurant restaurant) {
return null;
    }

1 Ответ

0 голосов
/ 03 июня 2019

Вы, вероятно, ошиблись в этой строке кода

this.http.post('http://localhost:8080/aquadine-jee/resources/restaurant',
      JSON.parse(JSON.stringify(data)) , httpOptions)

Вы должны изменить свой код на

this.http.post('http://localhost:8080/aquadine-jee/resources/restaurant',
      data) , httpOptions)

или использовать JSON.stringify, но у вас есть синтаксический анализ строки json всервер

this.http.post('http://localhost:8080/aquadine-jee/resources/restaurant',
      JSON.stringify(data)) , httpOptions)
...