簡體   English   中英

WebApi帖子轉到Get方法

[英]WebApi Post goes to Get method

在我的WebApi我嘗試添加POST方法。 我的GET已經在工作了。 通過添加POST方法,我嘗試了每個HTTP POST URL都轉到GetByCatalog方法。 我怎樣才能解決這個問題? 可能是路由問題,但我無法解決。

Customer.cs(模型)

[Table("tblRelatie")]
public class Customer
{
    //pkey
    [DatabaseGenerated(DatabaseGeneratedOption.Identity), Key()]
    [Column("fldRelatieID")]
    public int RelatieId { get; set; }

    [Column("fldRelatieSoort")]
    public int RelatieSoort { get; set; }

    [Column("fldRelatieCode")]
    public int RelatieCode { get; set; }

    [Column("fldNaam")]
    public string Naam { get; set; }

    [Column("fldContactpersoon")]
    public string Contactpersoon { get; set; }

    [Column("fldAdres")]
    public string Adres { get; set; }

    [Column("fldPostcode")]
    public string Postcode { get; set; }

    [Column("fldPlaats")]
    public string Plaats { get; set; }

    //fkey
    [Column("fldLandID")]
    public int? LandId { get; set; }

    [Column("fldCorrespondentieAdresContactpersoon")]
    public string CorrespondentieAdresContactpersoon { get; set; }

    [Column("fldCorrespondentieAdres")]
    public string CorrespondentieAdres { get; set; }

    [Column("fldCorrespondentieAdresPostcode")]
    public string CorrespondentieAdresPostcode { get; set; }

    [Column("fldCorrespondentieAdresPlaats")]
    public string CorrespondentieAdresPlaats { get; set; }

    [Column("fldCorrespondentieAdresLandID")]
    public int? CorrespondentieAdresLandId { get; set; }

    [Column("fldFactuurRelatieID")]
    public int? FactuurRelatieId { get; set; }

    [Column("fldTelefoon")]
    public string Telefoon { get; set; }

    [Column("fldMobieleTelefoon")]
    public string MobieleTelefoon { get; set; }

    [Column("fldFax")]
    public string Fax { get; set; }

    [Column("fldEmail")]
    public string Email { get; set; }

    [Column("fldBtwNummer")]
    public string BtwNummer { get; set; }

    [Column("fldDebiteurennummer")]
    public string Debiteurennummer { get; set; }

    [Column("fldFactuurkorting")]
    public decimal? Factuurkorting { get; set; }

    [Column("fldKrediettermijn")]
    public int? Krediettermijn { get; set; }

    [Column("fldBankrekeningnummer")]
    public string Bankrekeningnummer { get; set; }

    [Column("fldNaamRekeninghouder")]
    public string NaamRekeninghouder { get; set; }

    [Column("fldPlaatsRekeninghouder")]
    public string PlaatsRekeninghouder { get; set; }

    [Column("fldBankieren")]
    public bool Bankieren { get; set; }

    [Column("fldNonactief")]
    public bool Nonactief { get; set; }

    [Column("fldKlantKortinggroepID")]
    public int? KlantKortinggroepId { get; set; }

    [Column("fldKredietLimiet")]
    public decimal? KredietLimiet { get; set; }

    [Column("fldBestelBedragMinimum")]
    public decimal? BestelBedragMinimum { get; set; }

    [Column("fldMemo")]
    public string Memo { get; set; }

    [Column("fldKvkNummer")]
    public string KvkNummer { get; set; }

    [Column("fldCreditcardNummer")]
    public string CreditcardNummer { get; set; }

    [Column("fldWebsiteUrl")]
    public string WebsiteUrl { get; set; }

    [Column("fldAanmanen")]
    public int? Aanmanen { get; set; }

    [Column("fldElektronischFactureren")]
    public bool ElektronischFactureren { get; set; }

    [Column("fldOfferteEmailen")]
    public bool? OfferteEmailen { get; set; }

    [Column("fldOfferteEmailAdres")]
    public string OfferteEmailAdres { get; set; }

    [Column("fldOfferteCcEmailAdres")]
    public string OfferteCcEmailAdres { get; set; }

    [Column("fldBevestigingEmailen")]
    public bool? BevestigingEmailen { get; set; }

    [Column("fldBevestigingEmailAdres")]
    public string BevestigingEmailAdres { get; set; }

    [Column("fldBevestigingCcEmailAdres")]
    public string BevestigingCcEmailAdres { get; set; }

    [Column("fldFactuurEmailAdres")]
    public string FactuurEmailAdres { get; set; }

    [Column("fldFactuurCcEmailAdres")]
    public string FactuurCcEmailAdres { get; set; }

    [Column("fldAanmaningEmailen")]
    public bool? AanmaningEmailen { get; set; }

    [Column("fldAanmaningEmailAdres")]
    public string AanmaningEmailAdres { get; set; }

    [Column("fldAanmaningCcEmailAdres")]
    public string AanmaningCcEmailAdres { get; set; }

    [Column("fldOfferteAanvraagEmailen")]
    public bool? OfferteAanvraagEmailen { get; set; }

    [Column("fldOfferteAanvraagEmailAdres")]
    public string OfferteAanvraagEmailAdres { get; set; }

    [Column("fldOfferteAanvraagCcEmailAdres")]
    public string OfferteAanvraagCcEmailAdres { get; set; }

    [Column("fldBestellingEmailen")]
    public bool? BestellingEmailen { get; set; }

    [Column("fldBestellingEmailAdres")]
    public string BestellingEmailAdres { get; set; }

    [Column("fldBestellingCcEmailAdres")]
    public string BestellingCcEmailAdres { get; set; }

    [Column("fldUblBestandAlsBijlage")]
    public bool UblBestandAlsBijlage { get; set; }

    [Column("fldUblLeverancierNaamHide")]
    public string UblLeverancierNaamHide { get; set; }

    [Column("fldIban")]
    public string Iban { get; set; }

    [Column("fldBic")]
    public string Bic { get; set; }

    [Column("fldIncasseren")]
    public int? Incasseren { get; set; }

}

CustomerController.cs

public class CustomerController : ApiController
{

    /// <summary>
    /// Get all customers from a catalog
    /// </summary>
    /// <param name="catalog">The catalog (administration) name</param>
    /// <returns>All customers in the specified catalog</returns>
    [HttpGet]
    public IEnumerable<Customer> GetByCatalog(string catalog)
    {
        using (var db = new CustomerContext(Extensions.BuildConnectionString(catalog)))
        {
            return db.Customers.ToList();
        }
    }

    [HttpPost]
    public Customer Post(string catalog, [FromUri] Customer customer)
    {
        if (customer == null)
        {
            throw new ArgumentNullException("Customer");
        }

        using (var db = new CustomerContext(Extensions.BuildConnectionString(catalog)))
        {
            db.Customers.Add(customer);
            db.SaveChanges();
            return customer;
        }
    }

CustomerContext.cs

public class CustomerContext : DbContext
{
    public CustomerContext(string sConnectionString)
        : base(sConnectionString)
    {
        Database.SetInitializer<CustomerContext>(null);
    }

    public DbSet<Customer> Customers { get; set; }


}

RouteConfig.cs

public class RouteConfig
{
    public static void RegisterRoutes(RouteCollection routes)
    {
        routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

        routes.MapRoute(
            name: "Default",
            url: "{controller}/{action}/{id}",
            defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
        );
    }
}

Http發布網址

HTTP://本地主機:56909 / API /客戶/后目錄= Kopie&relatiesoort = 1&relatiecode = 300850&NAAM =彼得&contactpersoon =彼得&ADRES = STRAAT&郵政編碼= 8794PO&國家地點=亞當&landid = 1&correspondentieadrescontactpersoon = ADRES&correspondentieadres = STRAAT&correspondentieadrespostcode = 8415PO&correspondentieadresplaats =阿姆斯特丹&correspondentieadreslandid = 1&factuurrelatieid = 1&telefoon = 0147885665&mobieletelefoon = 06559889&傳真= 0582184和電子郵件=測試@ test.com&btwnummer = 688658&debiteurennummer = 74498&factuurkorting = 12,20&krediettermijn = 30&bankrekeningnummer = 6554561&naamrekeninghouder =笑與plaatsrekeninghouder =亞當bankieren =真nonactief =假klantkortinggroepid = 1&kredietlimiet = 10,000&bestelbedragminimum = 100,00和備忘錄=歐德%20klant&kvknummer = 665665&creditcardnummer = 868658658&websiteurl = test.nl&aanmanen = 1&elektronischfactureren = true&offerteemailen = false&offerteemailadres = klant @ klant.nl&offerteccemailadres = klant @ klant.nl&bevestigingemailen = false&bevestigingemailadres = test @ test.com&bevestigingccemailadres = test @ test。 COM&factuuremailadres =測試@ test.com&factuurccemailadres =測試@ test.com&aanmaningemailen =假aanmaningemailadres =測試@ test.com&aanmaningccemailadres =測試@ test.com&offerteaanvraagemailen =假offerteaanvraagemailadres =測試@ test.com&offerteaanvraagccemailadres =測試@ test.com&bestellingemailen =假bestellingemailadres =測試@ test.com&bestellingccemailadres = test@test.com&ublbestandalsbijlage=false&ublleveranciernaamhide=nee&iban=8688434&bic=8748&incasseren=1

編輯:

我現在正在使用NuGet Package WebAPITestClient來完成在建議對atornblad進行修改之后可以完美工作的請求

您在末尾發布的URL暗示您實際上不是使用POST發出請求,而是使用GET 你應該包括/后在URL中。 如果您改為對http:// localhost:56909 / api / customer進行POST ,則Web API基礎結構會為您解決問題! URL中傳遞的所有值實際上應作為POST數據而不是作為查詢字符串值傳遞,並且您實際上應該刪除[FromUri]屬性。

我不知道您使用什么框架(如果有)從瀏覽器發出請求,但是請確保您是POST -ing而不是GET -ting。

如果您使用的是jQuery,請在此處查看如何正確執行POST請求: http : //api.jquery.com/jquery.post/

否則,請查看框架的文檔。 另外,如果您編輯帖子以包含客戶端代碼(JavaScript) ,我可以更新此答案以使其更符合您的條件。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM