2017-07-19 59 views
1

我試了幾個小時纔得到這個固定的,我不斷收到錯誤: [致命]錯誤生成客戶端模型:找到操作對象與重複operationId'recent_items'。 OperationId在API中描述的所有操作中必須是唯一的。當試圖創建休息api時獲取重複操作ID

我使用的Visual Studio 2017年 Azure的SQL數據庫 C#

我看不到任何重複operationid在下面的(我也似乎無法整齊地格式化,在這裏 - !很抱歉)

{ 
    "swagger": "2.0", 
    "info": { 
     "version": "v1", 
     "title": "azure_items_API" 
    }, 
    "host": "azureitemsapi20170719125618.azurewebsites.net", 
    "schemes": ["http"], 
    "paths": { 
     "/api/recent_items": { 
      "get": { 
       "tags": ["recent_items"], 
       "operationId": "recent_items_GetAllrecent_items", 
       "consumes": [], 
       "produces": ["application/json", 
       "text/json", 
       "application/xml", 
       "text/xml"], 
       "responses": { 
        "200": { 
         "description": "OK", 
         "schema": { 
          "type": "array", 
          "items": { 
           "$ref": "#/definitions/recent_items" 
          } 
         } 
        } 
       }, 
       "deprecated": false 
      }, 
      "post": { 
       "tags": ["recent_items"], 
       "operationId": "recent_items_Postrecent_items", 
       "consumes": ["application/json", 
       "text/json", 
       "application/xml", 
       "text/xml", 
       "application/x-www-form-urlencoded"], 
       "produces": ["application/json", 
       "text/json", 
       "application/xml", 
       "text/xml"], 
       "parameters": [{ 
        "name": "recent_items", 
        "in": "body", 
        "required": true, 
        "schema": { 
         "$ref": "#/definitions/recent_items" 
        } 
       }], 
       "responses": { 
        "200": { 
         "description": "OK", 
         "schema": { 
          "$ref": "#/definitions/recent_items" 
         } 
        } 
       }, 
       "deprecated": false 
      } 
     }, 
     "/api/recent_items/{id}": { 
      "get": { 
       "tags": ["recent_items"], 
       "operationId": "recent_items_Getrecent_items", 
       "consumes": [], 
       "produces": ["application/json", 
       "text/json", 
       "application/xml", 
       "text/xml"], 
       "parameters": [{ 
        "name": "id", 
        "in": "path", 
        "required": true, 
        "type": "integer", 
        "format": "int32" 
       }], 
       "responses": { 
        "200": { 
         "description": "OK", 
         "schema": { 
          "$ref": "#/definitions/recent_items" 
         } 
        } 
       }, 
       "deprecated": false 
      }, 
      "put": { 
       "tags": ["recent_items"], 
       "operationId": "recent_items_Putrecent_items", 
       "consumes": ["application/json", 
       "text/json", 
       "application/xml", 
       "text/xml", 
       "application/x-www-form-urlencoded"], 
       "produces": [], 
       "parameters": [{ 
        "name": "id", 
        "in": "path", 
        "required": true, 
        "type": "integer", 
        "format": "int32" 
       }, 
       { 
        "name": "recent_items", 
        "in": "body", 
        "required": true, 
        "schema": { 
         "$ref": "#/definitions/recent_items" 
        } 
       }], 
       "responses": { 
        "204": { 
         "description": "No Content" 
        } 
       }, 
       "deprecated": false 
      }, 
      "delete": { 
       "tags": ["recent_items"], 
       "operationId": "recent_items_Deleterecent_items", 
       "consumes": [], 
       "produces": ["application/json", 
       "text/json", 
       "application/xml", 
       "text/xml"], 
       "parameters": [{ 
        "name": "id", 
        "in": "path", 
        "required": true, 
        "type": "integer", 
        "format": "int32" 
       }], 
       "responses": { 
        "200": { 
         "description": "OK", 
         "schema": { 
          "$ref": "#/definitions/recent_items" 
         } 
        } 
       }, 
       "deprecated": false 
      } 
     } 
    }, 
    "definitions": { 
     "recent_items": { 
      "type": "object", 
      "properties": { 
       "id": { 
        "format": "int32", 
        "type": "integer" 
       }, 
       "item_number": { 
        "type": "string" 
       }, 
       "stop_name": { 
        "type": "string" 
       }, 
       "stop_address1": { 
        "type": "string" 
       } 
      } 
     } 
    } 
} 

它確實有一個重複的get,但我改變了他們在控制器中的getAll。這裏是控制器全:

public class recent_itemsController : ApiController 
{ 
    private first_choice_itemsEntities db = new first_choice_itemsEntities(); 

    // GET: api/recent_items 
    public IQueryable<recent_items> GetAllrecent_items() 
    { 
     return db.recent_items; 
    } 

    // GET: api/recent_items/5 
    [ResponseType(typeof(recent_items))] 
    public IHttpActionResult Getrecent_items(int id) 
    { 
     recent_items recent_items = db.recent_items.Find(id); 
     if (recent_items == null) 
     { 
      return NotFound(); 
     } 

     return Ok(recent_items); 
    } 

    // PUT: api/recent_items/5 
    [ResponseType(typeof(void))] 
    public IHttpActionResult Putrecent_items(int id, recent_items recent_items) 
    { 
     if (!ModelState.IsValid) 
     { 
      return BadRequest(ModelState); 
     } 

     if (id != recent_items.id) 
     { 
      return BadRequest(); 
     } 

     db.Entry(recent_items).State = EntityState.Modified; 

     try 
     { 
      db.SaveChanges(); 
     } 
     catch (DbUpdateConcurrencyException) 
     { 
      if (!recent_itemsExists(id)) 
      { 
       return NotFound(); 
      } 
      else 
      { 
       throw; 
      } 
     } 

     return StatusCode(HttpStatusCode.NoContent); 
    } 

    // POST: api/recent_items 
    [ResponseType(typeof(recent_items))] 
    public IHttpActionResult Postrecent_items(recent_items recent_items) 
    { 
     if (!ModelState.IsValid) 
     { 
      return BadRequest(ModelState); 
     } 

     db.recent_items.Add(recent_items); 
     db.SaveChanges(); 

     return CreatedAtRoute("DefaultApi", new { id = recent_items.id }, recent_items); 
    } 

    // DELETE: api/recent_items/5 
    [ResponseType(typeof(recent_items))] 
    public IHttpActionResult Deleterecent_items(int id) 
    { 
     recent_items recent_items = db.recent_items.Find(id); 
     if (recent_items == null) 
     { 
      return NotFound(); 
     } 

     db.recent_items.Remove(recent_items); 
     db.SaveChanges(); 

     return Ok(recent_items); 
    } 

    protected override void Dispose(bool disposing) 
    { 
     if (disposing) 
     { 
      db.Dispose(); 
     } 
     base.Dispose(disposing); 
    } 

    private bool recent_itemsExists(int id) 
    { 
     return db.recent_items.Count(e => e.id == id) > 0; 
    } 
} 

回答

2

最後我不得不回去,在我的模型和控制器中刪除下劃線「_」。

我在數據庫表名稱和字段中刪除了它們以獲取更好的度量......我不確定是否需要這樣做。

這是非常令人沮喪的,並且浪費了大部分下午的好時光。

希望這可以幫助別人。