2017-07-19 26 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

最后我不得不回去,在我的模型和控制器中删除下划线“_”。

我在数据库表名称和字段中删除了它们以获取更好的度量......我不确定是否需要这样做。

这是非常令人沮丧的,并且浪费了大部分下午的好时光。

希望这可以帮助别人。