مرجع تخصصی برنامه نویسان

انجمن تخصصی برنامه نویسان فارسی زبان

کاربر سایت

AmirGhasemi

عضویت از 1392/02/25

عدم اتصال HttpPost Api از انگولار

  • دوشنبه 5 شهریور 1397
  • 14:48
تشکر میکنم

سلام دوستان

من دارم یک پروژه انگیولاری می نویسم که در سمت سرور یک api  دارم از نوع httppost  بدین صورت :

 [Route("api/currency/add")]
        [HttpPost]
        public string add(object entity)
        {
         
            return "ok!";
        }

اما در سمت انگیولار هر کاری می کنم و هر جور تغییری که می دم مدام میگه ارور 404  و این url  را پیدا نمی کنه!!!

در صورتیکه توی یک پروژه جی کوئری و ایجکس که دارم و همین متد را استفاده می کنم اصلا چنین مشکلی نیست!

ممنون راهنمایی سازنده بفرمایید

پاسخ های این پرسش

تعداد پاسخ ها : 6 پاسخ
کاربر سایت

ایمان مدائنی

عضویت از 1392/01/20

  • دوشنبه 5 شهریور 1397
  • 16:43

دستور زیر را از طریق nuget در پروژه api اجرا کنید حل میشه 

Install-Package Microsoft.AspNet.WebApi.Cors –IncludePrerelease

کاربر سایت

AmirGhasemi

عضویت از 1392/02/25

  • دوشنبه 5 شهریور 1397
  • 18:12

سلام بر حضرت ایمان عزیز

مشکل از عدم subscribe  صحیح بود. مساله حل شد خداراشکر.

اما نکته ی دیگری برایم پیش آمده است. من می خواهم در متد ورودی  یک فانکشن دیگر دیرفات کنه و در قسمت subscribe  اون فانکشن ورودی را اجرا کنه. فانکشن هم در واقع برای رفرش کردن یک گرید است اما متاسفانه نمی شناد.

 post(url: string, entity: any,callback:Function ) {
    url = this.defaultUrl + url;
    console.log(callback);
    var reqHeader = new HttpHeaders({ "Content-Type": "application/json" });
    return this.http
      .post(url, entity, { headers: reqHeader })
      .subscribe(
        res=>callback
      );
  }

اما وقتی به جای callback  در هنگام ورودی متد رفرش کردن گرید را می گذارم هیچ اقدامی نمی کند.

راهنمایی بفرمایید لطفا

کاربر سایت

ایمان مدائنی

عضویت از 1392/01/20

  • دوشنبه 5 شهریور 1397
  • 18:14

قست ذدی گرید را function کنید و در subscribe ففراخوانی کنید 

ngOnInit(): void{
  this.route.params.map((param: Params) => param['id']).switchMap(res => {
this.newsId = res;
  return this.api.getNewsbyId(res);
}).subscribe(res => this.news = res);
this.LoadComment();
}

LoadComment()
{
this.api.getAllCommments(this.newsId).subscribe(res => this.comments = res);
}

کاربر سایت

AmirGhasemi

عضویت از 1392/02/25

  • دوشنبه 5 شهریور 1397
  • 18:31

بله چیزی شبیه به این روش را قبلا انجام دادم و درست هم جواب میده منتها من دارم از یک کامپوننت به یک سرویس دیگه می فرستم که اون سرویس وضیفه اش add  کردن هر چیزی است که بهش بدم.

می خوام مثلا همین LoadComment  شما را بدم به یک سرویس دیگر که اونجا یک متد داره به اسم post  و بعد از اینکه اون با موفقیت صورت گرفت این متد LoadComment   را اجرا کنه!!!

کاربر سایت

ایمان مدائنی

عضویت از 1392/01/20

  • دوشنبه 5 شهریور 1397
  • 19:09

باید از Output ها استفاده کنید تا به اون کامپوننت اطلاع بدید 

توضیحش واقعا سخته 

یه نمونه براتون ضمیمه میکنم امیدوارم کمک کنه 

فایل های ضمیمه

کاربر سایت

AmirGhasemi

عضویت از 1392/02/25

  • سه شنبه 6 شهریور 1397
  • 07:48

ممنونو با تشکر فراوان از حسن نیت شما

کاربرانی که از این پست تشکر کرده اند

هیچ کاربری تا کنون از این پست تشکر نکرده است

اگر نیاز به یک مشاور در زمینه طراحی سایت ، برنامه نویسی و بازاریابی الکترونیکی دارید

با ما تماس بگیرید تا در این مسیر همراهتان باشیم :)