• <sub id="xcyjv"></sub><nav id="xcyjv"><code id="xcyjv"><meter id="xcyjv"></meter></code></nav>
      <nav id="xcyjv"></nav>
    1. <form id="xcyjv"><th id="xcyjv"></th></form><nav id="xcyjv"><mark id="xcyjv"></mark></nav>

        .Net Core WebApi的簡單創建以及使用方法

         更新時間:2019年09月11日 09:37:10   作者:風雨流逝   我要評論
        這篇文章主要給大家介紹了關于.Net Core WebApi的簡單創建以及使用方法的相關資料,文中通過示例代碼介紹的非常詳細,對大家學習或者使用.Net Core WebApi具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧

        前言

        按照目前的軟件開發發展趨勢中,不管是前后端分離還是提供數據服務,WebApi使用的越來越廣泛,而且.NET Core也是我們.NET開發人員未來發展的趨勢,所以說學會使用.NET Core Api是非常有必要的。

        本人作為一個.NET菜鳥,正在慢慢的學習中,將學到的一步一步記錄下來。

        一、創建項目

        打開VS2019,新建一個ASP.NET Core Web 應用程序。

        輸入項目名、選擇路徑創建。

        選擇.NET Core 我這里用的是.NET Core 2.2版本,選中API,把右邊的選中取消。

        創建的項目目錄內容如下。

        二、編輯控制器

        打開Controllers文件夾,這里我直接使用默認創建的ValuesController控制器。(其實是因為這是個例子我懶的再建了( ̄. ̄))

        ValuesController控制器默認內容如下。共有四個HTTP方法,分別為 Get、Post、Put 和 Delete。

        把該控制器的內容重新寫一下,將路由設置為api/控制器/方法(api/[controller]/[action])。按照常用Get 和 Post兩個請求,寫了兩個Get方法和一個Post方法,一個參數類。

        using System;
        using System.Collections.Generic;
        using System.Linq;
        using System.Threading.Tasks;
        using Microsoft.AspNetCore.Mvc;
        
        namespace FirstApi.Controllers
        {
          //路由設置
          [Route("api/[controller]/[action]")]
          [ApiController]
          public class ValuesController : ControllerBase
          {
            /// <summary>
            /// 獲取文本
            /// </summary>
            /// <returns></returns>
            [HttpGet]
            public ActionResult<string> Get()
            {
              return "Hello World!";
            }
            /// <summary>
            /// 兩數相加
            /// </summary>
            /// <param name="num1">第一個數</param>
            /// <param name="num2">第二個數</param>
            /// <returns></returns>
            [HttpGet]
            public ActionResult<int> Sum(int num1,int num2)
            {
              return num1 + num2;
            }
            /// <summary>
            /// 兩數相減
            /// </summary>
            /// <param name="param">參數</param>
            /// <returns></returns>
            [HttpPost]
            public ActionResult<int> Subtract(Param param)
            {
              int result = param.num1 - param.num2;
              return result;
            }
          }
          /// <summary>
          /// 參數
          /// </summary>
          public class Param
          {
            /// <summary>
            /// 第一個數
            /// </summary>
            public int num1 { get; set; }
            /// <summary>
            /// 第二個數
            /// </summary>
            public int num2 { get; set; }
          }
        }

        然后右鍵項目→屬性→調試,將啟動瀏覽器默認指向為第一個Get方法。

        調試運行,訪問第一個方法,返回結果。

        訪問第二個方法加上參數,得到結果。

        第三個方法是Post請求,無法直接輸入,可以用其他方式實現。

        三、搭建Swagger

        這樣WebApi 就簡單實現了,不過這樣不容易管理。為了更好的管理和測試我們的接口,我這里使用了Swagger框架。

        Swagger是什么?Swagger 是一個規范和完整的框架,用于生成、描述、調用和可視化RESTful風格的 Web 服務。

        右鍵項目,點擊管理NuGet程序包。

        切換到瀏覽,搜索“Swashbuckle.AspNetCore”,安裝。

        安裝完成之后,編輯Startup.cs文件。

        引用下面三個命名空間。

        using System;
        using System.Collections.Generic;
        using System.Linq;
        using System.Threading.Tasks;
        using Microsoft.AspNetCore.Mvc;
        
        namespace FirstApi.Controllers
        {
          //路由設置
          [Route("api/[controller]/[action]")]
          [ApiController]
          public class ValuesController : ControllerBase
          {
            /// <summary>
            /// 獲取文本
            /// </summary>
            /// <returns></returns>
            [HttpGet]
            public ActionResult<string> Get()
            {
              return "Hello World!";
            }
            /// <summary>
            /// 兩數相加
            /// </summary>
            /// <param name="num1">第一個數</param>
            /// <param name="num2">第二個數</param>
            /// <returns></returns>
            [HttpGet]
            public ActionResult<int> Sum(int num1,int num2)
            {
              return num1 + num2;
            }
            /// <summary>
            /// 兩數相減
            /// </summary>
            /// <param name="param">參數</param>
            /// <returns></returns>
            [HttpPost]
            public ActionResult<int> Subtract(Param param)
            {
              int result = param.num1 - param.num2;
              return result;
            }
          }
          /// <summary>
          /// 參數
          /// </summary>
          public class Param
          {
            /// <summary>
            /// 第一個數
            /// </summary>
            public int num1 { get; set; }
            /// <summary>
            /// 第二個數
            /// </summary>
            public int num2 { get; set; }
          }
        }

        在ConfigureServices方法里加入下面的代碼,注冊Swagger生成器,定義一個文檔,設置xml文檔的注釋路徑,。

        //配置Swagger
        //注冊Swagger生成器,定義一個Swagger 文檔
        services.AddSwaggerGen(c =>
        {
          c.SwaggerDoc("v1", new Info
          {
            Version = "v1",
            Title = "接口文檔",
            Description = "RESTful API"
          });
          // 為 Swagger 設置xml文檔注釋路徑
          var xmlFile = $"{Assembly.GetExecutingAssembly().GetName().Name}.xml";
          var xmlPath = Path.Combine(AppContext.BaseDirectory, xmlFile);
          c.IncludeXmlComments(xmlPath);
        });

        在Configure方法里加入下面的代碼,啟用中間件服務使用生成Swagger和SwaggerUI,將SwaggerUI中的RoutePrefix設為空字符串,這樣就能在根節點(http://localhost:port)直接顯示SwaggerUI界面。

        //啟用中間件服務生成Swagger
        app.UseSwagger();
        //啟用中間件服務生成SwaggerUI,指定Swagger JSON終結點
        app.UseSwaggerUI(c =>
        {
          c.SwaggerEndpoint("/swagger/v1/swagger.json", "Web App V1");
          c.RoutePrefix = string.Empty;//設置根節點訪問
        });

        編輯后Startup.cs完整代碼如下。

        using System;
        using System.Collections.Generic;
        using System.IO;
        using System.Linq;
        using System.Reflection;
        using System.Threading.Tasks;
        using Microsoft.AspNetCore.Builder;
        using Microsoft.AspNetCore.Hosting;
        using Microsoft.AspNetCore.Mvc;
        using Microsoft.Extensions.Configuration;
        using Microsoft.Extensions.DependencyInjection;
        using Microsoft.Extensions.Logging;
        using Microsoft.Extensions.Options;
        using Swashbuckle.AspNetCore.Swagger;
        
        namespace FirstApi
        {
          public class Startup
          {
            public Startup(IConfiguration configuration)
            {
              Configuration = configuration;
            }
        
            public IConfiguration Configuration { get; }
        
            // This method gets called by the runtime. Use this method to add services to the container.
            public void ConfigureServices(IServiceCollection services)
            {
              services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2);
              //配置Swagger
              //注冊Swagger生成器,定義一個Swagger 文檔
              services.AddSwaggerGen(c =>
              {
                c.SwaggerDoc("v1", new Info
                {
                  Version = "v1",
                  Title = "接口文檔",
                  Description = "RESTful API"
                });
                // 為 Swagger 設置xml文檔注釋路徑
                var xmlFile = $"{Assembly.GetExecutingAssembly().GetName().Name}.xml";
                var xmlPath = Path.Combine(AppContext.BaseDirectory, xmlFile);
                c.IncludeXmlComments(xmlPath);
              });
            }
        
            // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
            public void Configure(IApplicationBuilder app, IHostingEnvironment env)
            {
              if (env.IsDevelopment())
              {
                app.UseDeveloperExceptionPage();
              }
              //啟用中間件服務生成Swagger
              app.UseSwagger();
              //啟用中間件服務生成Swagger,指定Swagger JSON終結點
              app.UseSwaggerUI(c =>
              {
                c.SwaggerEndpoint("/swagger/v1/swagger.json", "Web App V1");
                c.RoutePrefix = string.Empty;//設置根節點訪問
              });
              app.UseMvc();
            }
          }
        }

        然后,右鍵項目,點擊屬性。

        選擇生成,選擇我們的Debug路徑。

        勾選XML文檔文件,自動填充,然后會出現警告(非強迫癥可以忽略警告)

        想要去掉警告,就在上面的取消顯示警告中加入上面顯示的1591,Ctrl+S保存一下,警告就沒了。

        然后點擊調試,將啟動瀏覽器后面url去掉。

        完成后,直接運行VS,就會進入文檔UI頁面了。

        四、使用Swagger

        我們打開第一個方法,點擊Try it out按鈕。

        這個是無參的方法,直接點擊Execute執行。

        執行后可以看到Response body返回的內容。

        點擊第二個方法,給出兩個參數,輸入執行,得到返回結果。

        第三個方法的參數是model,要傳遞json格式的,默認已經生成好了,我們只需要編輯改一下值,再執行就行了。

        五、總結

        到這里.NET Core Api的簡單搭建和使用就告一段落了,此篇學到了如何創建.NET Core Api項目與怎么搭建Swagger生成文檔及使用,接下來我會繼續學習和運用.NET Core Api,并將其過程記錄下來。本來想在這篇標題加個(一),但是想了想最近有可能更不了,等以后更了再加上吧。ㄟ( ▔, ▔ )ㄏ

        好了,以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對腳本之家的支持。

        相關文章

        最新評論

        01彩票网app
      1. <sub id="xcyjv"></sub><nav id="xcyjv"><code id="xcyjv"><meter id="xcyjv"></meter></code></nav>
          <nav id="xcyjv"></nav>
        1. <form id="xcyjv"><th id="xcyjv"></th></form><nav id="xcyjv"><mark id="xcyjv"></mark></nav>
            正定 | 抚州 | 黄石 | 吉林 | 广西南宁 | 安阳 | 大兴安岭 | 阳泉 | 铜陵 | 鸡西 | 厦门 | 台北 | 汉川 | 迁安市 | 玉树 | 德宏 | 包头 | 汉川 | 雅安 | 兴化 | 海西 | 黄冈 | 安顺 | 绍兴 | 天门 | 武威 | 桓台 | 赤峰 | 贺州 | 昌吉 | 萍乡 | 德阳 | 安康 | 定西 | 迁安市 | 台南 | 玉林 | 喀什 | 葫芦岛 | 淄博 | 阿勒泰 | 德阳 | 喀什 | 临夏 | 鄂尔多斯 | 嘉善 | 永新 | 商丘 | 金坛 | 益阳 | 阿拉尔 | 如皋 | 文昌 | 烟台 | 荣成 | 安岳 | 克拉玛依 | 遵义 | 莒县 | 鹤岗 | 珠海 | 贵州贵阳 | 溧阳 | 瑞安 | 嘉善 | 佛山 | 乌兰察布 | 青海西宁 | 四平 | 包头 | 三明 | 晋中 | 喀什 | 梧州 | 巴中 | 临沂 | 慈溪 | 台州 | 任丘 | 宜宾 | 沭阳 | 阳江 | 资阳 | 德清 | 基隆 | 崇左 | 铜仁 | 平潭 | 宿州 | 江苏苏州 | 汉川 | 日照 | 嘉峪关 | 亳州 | 鄢陵 | 江西南昌 | 武夷山 | 长垣 | 滁州 | 济南 | 新泰 | 象山 | 白山 | 乌海 | 神农架 | 吕梁 | 永康 | 保定 | 广元 | 连云港 | 自贡 | 黄南 | 鄂州 | 固原 | 四平 | 定西 | 晋城 | 淮北 | 克孜勒苏 | 崇左 | 郴州 | 绵阳 | 兴安盟 | 宝应县 | 陕西西安 | 普洱 | 莱州 | 永州 | 四川成都 | 林芝 | 莱芜 | 玉树 | 汉中 | 邳州 | 济宁 | 宁德 | 湖北武汉 | 陇南 | 溧阳 | 曲靖 | 如东 | 临沧 | 临猗 | 台中 | 浙江杭州 | 柳州 | 灵宝 | 神农架 | 琼中 | 天水 | 慈溪 | 揭阳 | 库尔勒 | 兴化 | 荆州 | 江苏苏州 | 台州 | 自贡 | 嘉兴 | 内江 | 延边 | 甘南 | 济源 | 澄迈 | 松原 | 新沂 | 朔州 | 基隆 | 三沙 | 衡阳 | 南通 | 锦州 | 随州 | 嘉峪关 | 延边 | 株洲 | 宁德 | 三亚 | 嘉兴 | 吉林 | 台州 | 定西 | 唐山 | 永康 | 金华 | 庆阳 | 乌兰察布 | 兴安盟 | 济南 | 蚌埠 | 临汾 | 莱芜 | 遵义 | 台山 | 中卫 | 任丘 | 高雄 | 兴安盟 | 石狮 | 庆阳 | 汉中 | 双鸭山 | 东海 | 衢州 | 滨州 | 开封 | 辽源 | 安吉 | 萍乡 | 扬州 | 常州 | 浙江杭州 | 金昌 | 常德 | 偃师 | 中卫 | 锡林郭勒 | 乐平 | 枣阳 | 香港香港 | 高密 | 自贡 | 巴彦淖尔市 | 长葛 | 襄阳 | 吉林 | 陇南 | 锦州 | 商丘 | 迪庆 | 榆林 | 荣成 | 淮安 | 乳山 | 浙江杭州 | 绍兴 | 白银 | 单县 | 湖州 | 广安 | 肥城 | 宣城 | 安阳 | 安岳 | 阿坝 | 池州 | 哈密 | 安庆 | 石嘴山 | 果洛 | 博尔塔拉 | 南通 | 台中 | 海西 | 燕郊 | 涿州 | 泰兴 | 果洛 | 三沙 | 瓦房店 | 双鸭山 | 丹阳 | 神木 | 张家口 | 枣阳 | 张家界 | 定安 | 驻马店 | 林芝 | 湖北武汉 | 曲靖 | 铜陵 | 内蒙古呼和浩特 | 天门 | 潜江 | 白山 | 玉环 | 永康 | 如皋 | 济宁 | 仁怀 | 丽江 | 余姚 | 厦门 | 江西南昌 | 三亚 | 三河 | 潮州 | 泰安 | 甘南 | 贵州贵阳 | 馆陶 | 郴州 | 河南郑州 | 肇庆 | 石狮 | 娄底 | 潜江 | 寿光 | 雅安 | 运城 | 临汾 | 泰州 | 瑞安 | 保定 | 唐山 | 涿州 | 南京 | 兴化 | 临沂 | 阿里 | 防城港 | 乐清 | 诸暨 | 东台 | 靖江 | 株洲 | 鄂尔多斯 | 大兴安岭 | 宿州 | 南充 | 阜新 | 延边 | 咸阳 | 临沧 | 鄢陵 | 滁州 | 信阳 | 黄山 | 鹤壁 | 阿克苏 | 昭通 | 贺州 | 韶关 | 滁州 | 潮州 | 绥化 | 滁州 | 聊城 | 宿迁 | 定州 | 巴彦淖尔市 | 杞县 | 西双版纳 | 南平 | 武威 | 永州 | 新余 | 东营 | 禹州 | 万宁 | 保定 | 台山 | 仁怀 | 喀什 | 张掖 | 泰兴 | 池州 | 蚌埠 | 沛县 | 天长 | 广汉 | 中卫 | 大庆 | 枣阳 | 临夏 | 济宁 | 赣州 | 永新 | 克拉玛依 | 南平 | 金华 | 巴中 | 孝感 | 乌兰察布 | 黑龙江哈尔滨 | 吉林长春 | 柳州 | 泉州 | 灌云 | 基隆 | 汉川 | 鹤壁 | 溧阳 | 鹤岗 | 神农架 | 甘南 | 云南昆明 | 甘南 | 大丰 | 塔城 | 醴陵 | 曲靖 | 澄迈 | 潮州 | 娄底 | 珠海 | 东海 | 内江 | 琼中 | 湘潭 | 周口 | 白城 | 内江 | 海丰 | 鹤岗 | 鸡西 | 滨州 | 唐山 | 韶关 | 桂林 | 玉溪 | 醴陵 | 岳阳 | 本溪 | 兴安盟 | 博尔塔拉 | 晋中 | 洛阳 | 武安 | 定州 | 崇左 | 泸州 | 黔南 | 南安 | 无锡 | 兴安盟 | 项城 | 霍邱 | 溧阳 | 衢州 | 莱州 | 肇庆 | 图木舒克 | 洛阳 | 库尔勒 | 七台河 | 偃师 | 招远 | 公主岭 | 铜川 | 红河 | 晋中 | 阿勒泰 | 葫芦岛 | 咸阳 | 南通 | 大庆 | 马鞍山 | 景德镇 | 洛阳 | 塔城 | 日土 | 喀什 | 邹平 | 泰安 | 邢台 | 朝阳 | 咸阳 | 嘉峪关 | 吉林 | 泸州 | 开封 | 株洲 | 扬州 | 保定 | 兴安盟 | 临沧 | 潜江 | 淮南 | 赵县 | 长兴 | 灌云 | 保山 | 咸宁 | 平顶山 | 楚雄 | 安阳 | 宁波 | 高雄 | 丽江 | 永州 | 靖江 | 临夏 | 长治 | 永州 | 临夏 | 曹县 | 商丘 | 随州 | 滕州 | 株洲 | 宜昌 | 安庆 | 宁国 | 嘉善 | 莆田 | 赣州 | 滕州 | 漳州 | 澄迈 | 灌云 | 双鸭山 | 扬中 | 九江 | 宜昌 | 基隆 | 吐鲁番 | 丽水 | 浙江杭州 | 保亭 | 和田 | 义乌 | 衡水 | 顺德 | 娄底 | 天水 | 汕尾 | 香港香港 | 滨州 | 遵义 | 黔东南 | 朔州 | 濮阳 | 眉山 | 宿迁 | 安顺 | 铁岭 | 武夷山 | 三门峡 | 鄂尔多斯 | 顺德 | 吐鲁番 | 周口 | 铜陵 | 雄安新区 | 大兴安岭 | 遵义 | 柳州 | 大庆 | 大理 | 吉林长春 | 莆田 | 湘西 | 丹东 | 铜仁 | 阿坝 | 象山 | 阿勒泰 | 通化 | 北海 | 定安 | 大兴安岭 | 阜新 | 晋江 | 济宁 | 梧州 | 黑河 | 亳州 | 吉林长春 | 德宏 | 秦皇岛 | 淮南 | 基隆 | 承德 | 陇南 | 七台河 | 定安 | 永州 | 忻州 | 韶关 | 恩施 | 德清 | 海拉尔 | 咸宁 | 嘉兴 | 湘潭 | 图木舒克 | 黔东南 | 湖南长沙 | 顺德 | 抚州 | 日喀则 | 沭阳 | 遵义 | 漳州 | 海拉尔 | 包头 | 鹤岗 | 安顺 | 神农架 | 四平 | 北海 | 庄河 | 长垣 | 和县 | 和县 | 迪庆 | 靖江 | 四川成都 | 徐州 | 醴陵 | 赤峰 | 长葛 | 和田 | 神木 | 泰兴 | 宜宾 | 抚顺 | 沭阳 | 营口 | 黔南 | 昌吉 | 鹰潭 | 驻马店 | 兴化 | 阿拉尔 | 岳阳 | 茂名 | 三门峡 | 平凉 | 定安 | 儋州 | 诸暨 | 海南 | 随州 | 池州 | 临猗 | 阜新 | 伊犁 | 陕西西安 | 巢湖 | 来宾 | 绥化 | 通辽 | 德清 | 湘潭 | 荆州 | 淄博 | 钦州 | 黄南 | 烟台 | 台中 | 邳州 | 诸城 | 黔南 | 张掖 | 漯河 | 通化 | 安吉 | 攀枝花 | 台北 | 金昌 | 甘肃兰州 | 江西南昌 | 娄底 | 吴忠 | 新余 | 延安 | 濮阳 | 安阳 | 萍乡 | 珠海 | 玉环 | 阿拉善盟 | 黄石 | 黄冈 | 信阳 | 保定 | 清远 | 东海 | 晋城 | 云南昆明 | 梅州 | 济宁 | 咸阳 | 湘西 | 章丘 | 潜江 | 日土 | 双鸭山 | 沭阳 | 台南 | 河池 | 嘉善 | 金华 | 抚顺 | 林芝 | 甘孜 | 烟台 | 六安 | 潍坊 | 三沙 | 泗洪 | 台北 | 河北石家庄 | 和县 | 忻州 | 湛江 | 深圳 | 鞍山 | 毕节 | 大连 | 巴中 | 云浮 | 许昌 | 江西南昌 | 咸宁 | 黑河 | 南京 | 漳州 | 包头 | 乌兰察布 | 菏泽 | 广安 | 乌兰察布 | 克拉玛依 | 玉林 | 海南海口 | 湖南长沙 | 玉林 | 潜江 | 阿拉善盟 | 雄安新区 | 滨州 | 宁波 | 玉溪 | 玉树 | 咸阳 | 本溪 | 日土 | 东莞 | 通辽 | 台湾台湾 | 宝应县 | 简阳 | 泰兴 | 潮州 | 昌吉 | 阳江 | 西双版纳 | 温岭 | 金坛 | 贵港 | 马鞍山 | 廊坊 | 咸阳 | 济源 | 运城 | 乌兰察布 | 余姚 | 贵州贵阳 | 吉林长春 | 绍兴 | 常德 | 六安 | 周口 | 阿坝 | 遂宁 | 高雄 | 博尔塔拉 | 盘锦 | 攀枝花 | 吉林 | 湖南长沙 | 榆林 | 滁州 | 南充 | 宜昌 | 保定 | 塔城 | 广元 | 楚雄 | 焦作 | 龙口 | 大丰 | 黔南 | 姜堰 | 绥化 | 宁国 | 岳阳 | 唐山 | 广州 | 泗洪 | 燕郊 | 鹤岗 | 晋城 | 烟台 | 本溪 | 灌云 | 黔南 | 台州 | 镇江 | 芜湖 | 崇左 | 海东 | 保山 | 衢州 | 株洲 | 南平 | 海南 | 浙江杭州 | 自贡 | 顺德 | 巴中 | 昭通 | 诸暨 | 池州 | 玉环 | 怀化 | 定西 | 明港 | 桐乡 | 通辽 | 明港 | 灵宝 | 绵阳 | 临沧 | 永州 | 亳州 | 永新 | 澳门澳门 | 吉安 | 内江 | 鞍山 | 白银 | 阳泉 | 景德镇 | 四平 | 如皋 | 建湖 | 宁国 | 日土 | 衡水 | 大丰 | 新乡 | 怒江 | 泰州 | 如东 | 营口 | 六盘水 | 呼伦贝尔 | 白沙 | 灌南 | 巢湖 | 珠海 | 项城 | 淮北 | 荣成 | 青州 | 海门 | 阳江 | 迪庆 | 东方 | 保定 | 文山 | 泰安 | 兴安盟 | 盘锦 | 延边 | 昭通 | 佳木斯 | 改则 | 天水 | 克拉玛依 | 榆林 | 庆阳 | 孝感 | 吉林长春 | 中山 | 濮阳 | 铜陵 | 遵义 | 贺州 | 日土 | 永康 | 包头 | 牡丹江 | 甘孜 | 潮州 | 来宾 | 阜新 | 海东 | 巴音郭楞 | 琼中 | 佛山 | 赣州 | 长垣 | 陇南 | 广西南宁 | 辽阳 | 衡水 | 灵宝 | 赵县 | 崇左 | 宿迁 | 天门 | 龙口 | 唐山 | 临海 | 吉林长春 | 朔州 | 姜堰 | 柳州 | 白山 | 黔东南 | 潍坊 | 莆田 | 东阳 | 亳州 | 伊犁 | 荆门 | 通辽 | 燕郊 | 酒泉 | 台湾台湾 | 吉林 | 泰州 | 来宾 | 垦利 | 河源 | 眉山 | 忻州 | 陕西西安 | 黑河 | 临海 | 黔南 | 大理 | 宿迁 | 泰州 | 延安 | 双鸭山 | 惠州 | 武安 | 济源 | 衡阳 | 鹰潭 | 临海 | 肥城 | 普洱 | 招远 | 晋中 | 云南昆明 | 溧阳 | 梧州 | 玉溪 | 湖南长沙 | 和田 | 毕节 | 阿克苏 | 武安 | 固原 | 湛江 | 四川成都 | 抚州 | 嘉兴 | 宜春 | 铁岭 | 铜川 | 文昌 | 中卫 | 通化 | 三门峡 | 图木舒克 | 宣城 | 云南昆明 | 大兴安岭 | 天水 | 新疆乌鲁木齐 | 滕州 | 资阳 | 乳山 | 鹰潭 | 那曲 | 象山 | 清远 | 文昌 | 东阳 | 东阳 | 河南郑州 | 金华 | 景德镇 | 德清 | 吉林 | 恩施 | 长葛 | 辽阳 | 那曲 | 潍坊 | 高雄 | 宁德 | 德宏 | 和县 | 湖北武汉 | 西双版纳 | 白银 | 鹤壁 | 海南海口 | 台湾台湾 | 陕西西安 | 淄博 | 眉山 | 惠州 | 松原 | 莱芜 | 昌吉 | 乐平 | 阿拉尔 | 昭通 | 大连 | 德州 | 七台河 | 淮北 | 靖江 | 丹阳 | 丽水 | 武安 | 牡丹江 | 黔东南 | 辽阳 | 崇左 | 南通 | 云南昆明 | 河源 | 丹阳 | 五家渠 | 眉山 | 乌海 | 莒县 | 阜新 | 毕节 | 海丰 | 镇江 | 海西 | 昌吉 | 周口 | 喀什 | 芜湖 | 济宁 | 台南 | 神农架 | 瓦房店 | 昭通 | 阿里 | 乐山 | 白山 | 十堰 | 乌兰察布 | 新泰 | 凉山 | 齐齐哈尔 | 湛江 | 文昌 | 遵义 | 文山 | 海门 | 常德 | 金昌 | 白山 | 辽宁沈阳 | 新沂 | 灌南 | 铜陵 | 巴音郭楞 | 巴音郭楞 | 金坛 | 昌吉 | 黑龙江哈尔滨 | 泰州 | 西双版纳 | 泗洪 | 保定 | 百色 | 阿里 | 阿拉善盟 | 大丰 | 深圳 | 宜昌 | 阿勒泰 | 林芝 |