Как передать значение json obj в API в угловых (для метода post) - PullRequest
0 голосов
/ 19 сентября 2019

Здесь я пытаюсь отправить некоторые данные в API. Но это не работает. Потому что у меня 400 неверных запросов. Я думаю, что мой сервис или машинопись не в порядке. При попытке почтальона я получил вывод. Поэтому я подтверждаюмой веб-интерфейс работает нормально.На самом деле я новичок в angular.so, пожалуйста, helpme для этого, я новичок. Я много раз искал здесь, но не получил ответа.здесь мой API принимает значение с помощью json obj, как (Обратите внимание, что я использую веб-API angular4)

{ 
 "Header": {

        "UserID": 6,
       "created": "February 4, 2016 10:13:00",
        ....etc........
     },

  "detail": [
{

  "ShopID": 1,
 "ItemID": 126,
.....etc.........
  },
  {     
 "ShopID": 1,
 "ItemID": 127,
.....etc.........
 }
 ]
 }

, но мои данные передаются в API, как (так что я думаю, что это проблема)

    [{
  "userid": "64",
  "created": "February 4, 2016 10:13:00",
  "CompanyID": "1",
  "modified": "February 4, 2016 10:13:00",
  "modifieduserid": "65",
  "confirm": "true",
  "ShopId": 1,
  "TransactionId": 1,
   "shopid": 12,
  "Itemid": 12928,
  "PackingTypeID": 3,
  "Itemcode": "124018",
  "Itemdescription": "COTTON GLOVES 350G",
  "PackingtypeName": "12 PCS",
  "Stockcount": 12

}]

А это мой файл TS

     stockitems: IStockCountHeaders[] = [];   
 items: IStockCountHeaders;
  stockdetail: IStockdetails[] = [];

  addItems(value: any) {
this.items = new IStockCountHeaders(this.userid, this.created, t this.confirm,this.shopid, 
 value.ItemID, value.PackingTypeID, value.ItemCode, value.ItemDescription, 
 value.PackingtypeName, 
    value.Stock,
   );
this.stockitems.push(this.items);
  }
onclick(){
 this._enqService.CatchStockDetailHeader(this.stockitems)
    .subscribe(value => {
        if (typeof value !== 'undefined' && value != null) {
            value.forEach(items => {
                this.stockitems.push(this.items)
            });
        }
    },
        error => {
            console.error(error);
            this.statusMessage = "Problem with the service.Please try again after sometime";
        });
 }

Это мой угловой сервисный файл

          CatchStockDetailHeader(stock: any)
    : Observable<IStockCountHeaders[]> {
    let IStockCounts = stock;  
    console.log(IStockCounts)
    let headers = new Headers({ 'Content-Type': 'application/json' });
    let options = new RequestOptions({ headers: headers });
    headers.append('userid', IStockCounts.userid);
    headers.append('created', IStockCounts.created);
    headers.append('.CompanyID', IStockCounts.CompanyID);
    headers.append('modified', IStockCounts.modified);
    headers.append('modifieduserid', IStockCounts.modifieduserid);
    headers.append('confirm', IStockCounts.confirm);    
    return this._http.post('http://localhost:3071/api/Stockcountheader/' + 'Stock', IStockCounts, options)
        .map((response: Response) => <IStockCountHeaders[]>response.json())
        .catch(this.handleError);
}

1 Ответ

1 голос
/ 19 сентября 2019

Вы делаете междоменный запрос, потому что вы отправляете на localhost: 3071, и вы обычно размещаете приложение Angular на localhost: 4200.

Два варианта - добавить заголовок allow all из API.или использовать прокси.

Чтобы разрешить междоменный запрос от вашего API, добавьте на сервер заголовок

Access-Control-Allow-Origin: *

.

Чтобы использовать прокси, создайте файл с именемproxy.config.json

{
  "/api/*": {
    "target": "http://localhost:3071/api/",
    "pathRewrite": {
      "^/api": ""
    },
    "changeOrigin": true,
    "secure": false,
    "logLevel": "debug"
  }
}

и использовать с

ng serve --proxy-config proxy.config.json

И вместо использования

http://localhost:3071/api/

использовать

/api/
...