как правильно использовать пост api rest с Angular 5? - PullRequest
0 голосов
/ 21 мая 2018

У меня есть следующий сервис в приложении angular 5:

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

addTrip(trip: Trip): Observable<any> {
    console.log('Adding trip ' + JSON.stringify(trip));
    return this.http.post(`${this.baseUrl}/Trips/trip/`, JSON.stringify(trip), httpOptions);
  }

Поездка выглядит (в угловом выражении):

export interface Trip {
  description: string;
}

Java-код - это компонент шва, который использует остальные API:

@Name("tripFacadeREST")
@Scope(ScopeType.EVENT)
@Path("Trips")
public class TripFacadeREST {

    @In private TripDaoHibernateImpl tripDao;

...

@POST
@Path("Trip")
@Consumes("application/json")
public Response addNewTrip(Trip newTrip) {
    tripDao.addTrip(newTrip);
    return Response.ok().entity("trip added successfully").build();
}

Я не могу заставить этот вызов работать, я попытался также поставить, но я понимаю, что это для обновления, и потому что идентификатор создан на стороне сервера, я использовал post, серверсторона не срабатывает.Есть идеи, как решить эту проблему?(Я смог использовать аннотацию GET в том же сервисе без проблем).

1 Ответ

0 голосов
/ 21 мая 2018

Ваш код HttpClient выглядит нормально - и поскольку вы ничего не видите на вкладке сети, держу пари, что вы не подписываетесь на Observable, возвращаемое addTrip.

Если вы не подписываетесь на Observable, он будетне выполняется.

Из документов:

Всегда подписываться!

Метод HttpClient не начинает свой HTTP-запрос, пока вы не вызоветеподписка () на наблюдаемое, возвращаемое этим методом.Это верно для всех методов HttpClient.

https://angular.io/guide/http#always-subscribe

...