1. 程式人生 > >iOS的服務端api介面怎麼寫

iOS的服務端api介面怎麼寫

       作為一名iOS 碼農還是有兩年多的時間了,一共換過兩家公司,現在的公司主要是做.net相關的產品。在業餘時間得到了同事的幫助,瞭解了下服務端的api介面的相關知識。這裡當做一個筆記給那些剛剛接觸iOS開發的新朋友瞭解下。PS:想當初我想了解web service的東西的時候,四處都找不到資料,要麼就是soap的東東,太老,反正各種你找不到。

    採用.Net平臺的實現api的方式有很多,剛來公司時用的是一般處理程式字尾為*.ashx 或者一面程式*.aspx來返回json;然後是MVC的框架返回json,好吧最後終於迎來了Web api。拋開.net這個框架,其實api的實質不外乎就是返回你需要的資料資訊(以json格式展示、或者xml格式)。而這些資料資訊可以是在服務後臺做了一些邏輯處理a,服務端的c#程式碼處理邏輯(操作實體);b,用sql程式碼級別直接在篩選資料的時就做過濾。 當拿到這些資料後,.Net能幫我們做的事情就是序列化為json格式的東東了,然後當你請求的時候返回給客戶端而已。而要弄清楚,每個環節當然有其書面的名稱,建議有興趣的可以在www.asp.net的相關章節學習。


對於iOS客戶端開發人員直接面對的是前面兩個框框的內容,至於後面的服務端是怎麼返回json的看下面的程式碼吧。

using BooksApi.DTOs;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Linq.Expressions;
using System.Net;
using System.Net.Http;
using System.Text;
using System.Web.Http;
using System.Web.Script.Serialization;

namespace BooksApi.Controllers
{
    [RoutePrefix("api/students")]
    public class StudentsController : ApiController
    {

        private static readonly Expression<Func<Classmates_T, StudentDto>> AsStudentDto =
    x => new StudentDto
    {
        Name = x.Name,
        Address = x.Address,
        Phone = x.Phone
    };
        MobileVersionEntities dbctx = new MobileVersionEntities();

        [Route("{id?}")]
        // GET api/<controller>/5
        public IQueryable<StudentDto> Get(string id = null)
        {

            //  var result = (from u in dbctx.Classmates_T select u).ToList<Classmates_T>();
            var res = id != null ?
                dbctx.Classmates_T.Where(o => o.Name.Contains(id) ||
                    o.Phone.Contains(id)).
                Select(AsStudentDto) :
                dbctx.Classmates_T.Select(AsStudentDto).AsQueryable();
            return res;
        }



        // POST api/<controller>
        public void Post([FromBody]string value)
        {

        }


    }
}

那麼我訪問 http://192.168.20.189:6900/bk/api/students?$select=Name,Address 時候就會返回(StudentDto模型)中的兩個欄位,而Phone這個欄位我這裡並沒有查
[{"Address":"四川成都高新西","Name":"段叔佑"},{"Address":"深圳","Name":"羅林"}]

的json資料。

    [RoutePrefix("api/students")] 為特性路由,當你訪問xxxx/api/students就會對應找到該WebApi的Controller,預設會執行Get方法,然後資料庫中的表Classmate_T包含的欄位太多了,這裡我現在程式碼層進行了一次篩選。建立了一個StudentDto的Model來裝Classmate_T對應Model中的部分值。
然後就是操作資料庫中得到<span style="font-family: Arial, Helvetica, sans-serif;">Classmates_T,對其中得到你資料進行一次類似策略模式的處理——把Classmate_T對應的實體變成StudentDto實體。</span>
就是這麼簡單的幾句話,即可完成一個webapi。在程式碼部分做了一些擴充套件1,根據id 模糊查詢 2,web api odata的query擴充套件。如果不考慮這些擴充套件,你寫web api在後期可能無法滿足等你功能變化的需求,但是總的來說.Net web api這個框架讓我們更多專注邏輯的東西,而至於怎麼序列化的事情我們就沒有必要那麼關心了。 http://download.csdn.net/detail/duanhai189/8201173

相關推薦

iOS服務api介面怎麼

       作為一名iOS 碼農還是有兩年多的時間了,一共換過兩家公司,現在的公司主要是做.net相關的產品。在業餘時間得到了同事的幫助,瞭解了下服務端的api介面的相關知識。這裡當做一個筆記給那些剛剛接觸iOS開發的新朋友瞭解下。PS:想當初我想了解web servic

釘釘服務api介面使用

第一步:註冊釘釘企業賬號 開啟連結:https://oa.dingtalk.com/#/login,註冊賬號即可   第二步:建立應用 以建立e應用為例:   還需要授權一個開發人員,並獲取CorpSecret,需要把corpId和CorpSecret作為引數請求api介面獲取

api-gateway實踐(8)新服務網關 - 測試發布(服務API

isp logs rest span com 點擊 功能 size json對象 一、網關引擎 網關引擎地址:http://10.110.20.191:8080/api-gateway-engine/ 二、服務提供者 服務提供者地址:http://10.110.20.19

一次性搞懂服務API安全解決方案

今年五月份去融貝網、獵豹移動面試的時候,被問到API安全加密的問題,很慚愧,自己回答的很不全面。自己也知道那是沒有徹底弄明白原理。然後,8月份的時候,上家公司新專案啟動時也和同事探討過,然後就去徹徹底底瞭解了一下,趁著熱乎勁兒還沒過去總結出來吧。 安全是相對的,下面是根據安全級別分析。我用簡單的PHP程式碼

IM開發基礎知識補課(三):快速理解服務資料庫讀分離原理及實踐建議

1、前言 IM應用從服務端資料的角度來看,它是一種很特殊的應用場景,拋開基礎資料、增值業務和附屬功能不談,單從IM聊天工具的立身之本——聊天資料來說,理論上是不需要在服務端儲存的(或者說只需要短暫儲存——比如離線訊息,上線即拉走),這也是為什麼微信在前段時間號稱絕不儲存使用

用 GraphQL 快速搭建服務 API

Glow 從今年 4 月開始為中國的產品「共樂孕」app 的使用者開發社群功能,雖然在之前美國的社群的類似的功能都進行過實現,但我們仍然決定要在這次中國的社群產品開發中嘗試一些新東西。其中就包括 GraphQL 。 今天的文章中會簡單介紹下 GraphQL 和我們在伺服器端使用

iOS:web api 介面大全

查詢手機http://www.yodao.com/s-martresult-xml/search.s?type=mobile&q= 手機號碼查詢 IPhttp://www.yodao.com/s-martresult-xml/search.s?type=ip&

移動API介面優化的術和結果

最近一直在忙工作的事情,所以文章寫得有些少. 有3-5篇文章都是寫到一半然後被別的事情給打斷了,所以,我得找個時間好好補補. 最近一直在關注移動端介面API的可用性問題,在移動時代這個做這個優化能產生相當大的優化結果。根據經驗資料一般不做任何優化,介面的可用性在95%左右。舉個例子,廣告介面的可用性直接決

阿里雲直播服務API的坑。

使用ffmpeg 推流過程中,想通過 Aliyun 的 live API來確定流是否線上。但是當流還在推送的情況下,API返回的列表中還是有可能不包含正在推送的流的,雖然這種情形出現的機率不高。有時候推送一個90分鐘的流一次都不出現,但也有的時候能出現好多次。

個推安卓推送——服務api初級使用手冊

前言 自從瞭解到推送可以提升使用者留存率等諸多優勢之後,越來越多的開發者開始在他們的服務中加入推送的功能。由於每天有大量新加入的開發者詢問在他們的服務端中整合個推服務api的問題,特此寫一篇初級使用文件,儘可能幫助大家少走彎路,一次成功。 首先你需要在個推開放著平臺上註冊你

安卓推送——個推服務api使用誤區

前言 個推每天的訊息推送量數以億計,統計分析日誌時,經常可以從日誌規律發現呼叫方的一些使用誤區,今天提幾點開發者在使用個推api時易出現的幾個誤區。 誤區一 推送選錯介面 個推服務端adk提供給開發者三個推送介面:pushMessageToSingle/ pushMessa

運用有道api介面一個小翻譯(簡單版)

package com.zhidi.zuoye; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStrea

C#開發BIMFACE系列6 服務API之獲取檔案資訊

在《C#開發BIMFACE系列4 服務端API之源上傳檔案》、《C#開發BIMFACE系列5 服務端API之檔案直傳》兩篇文章中詳細介紹瞭如何將本地檔案上傳到BIMFACE伺服器及BIMFACE後臺的分散式儲存系統中。檔案上傳成功後,BIMFACE的服務會返回與該檔案相關的資訊,如下圖:  開

C#開發BIMFACE系列12 服務API之檔案轉換

系列目錄     【已更新最新開發文章,點選檢視詳細】 在代表模型的原始檔上傳到BIMFACE後,一般會進行三種API呼叫操作: 發起模型轉換 查詢轉換狀態 如轉換成功,獲取模型轉換後的BIM資料 在模型成功進行

C#開發BIMFACE系列14 服務API之批量獲取轉換狀態詳情

系列目錄     【已更新最新開發文章,點選檢視詳細】 上一篇《C#開發BIMFACE系列13 服務端API之獲取轉換狀態》中介紹了根據檔案ID查詢單個檔案的轉換狀態。 本文介紹批量獲取轉換狀態詳情。   請求地址:POST https://api.b

C#開發BIMFACE系列17 服務API之獲取模型資料2:獲取構件材質列表

系列目錄     【已更新最新開發文章,點選檢視詳細】 在上一篇《C#開發BIMFACE系列16 服務端API之獲取模型資料1:查詢滿足條件的構件ID列表》中介紹了獲取單檔案(模型)的所有構建ID列表。每個構建由多種材質組成,本文介紹獲取單個構建ID的材質列表。 請

C#開發BIMFACE系列18 服務API之獲取模型資料3:獲取構件屬性

系列目錄     【已更新最新開發文章,點選檢視詳細】 本篇主要介紹如何獲取單檔案/模型下單個構建的屬性資訊。 請求地址:GET https://api.bimface.com/data/v2/files/{fileId}/elements/{elementId}

C#開發BIMFACE系列19 服務API之獲取模型資料4:獲取多個構件的共同屬性

系列目錄     【已更新最新開發文章,點選檢視詳細】 在前幾篇部落格中介紹了一個三維檔案/模型包含多個構建,每個構建又是由多種材質組成,每個構建都有很多屬性。不同的構建也有可能包含相同的屬性。 上圖中可以看到構建1與構建2擁有相同的屬性2,構建2與構建n擁有相

C#開發BIMFACE系列21 服務API之獲取模型資料6:獲取單模型的樓層資訊

系列目錄     【已更新最新開發文章,點選檢視詳細】 一個檔案/模型中可能包含多個樓層資訊,獲取樓層資訊對於前端頁面的動態展示非常有幫助。本篇介紹獲取一個檔案/模型中可能包含多個樓層資訊的詳細方法。 請求地址:GET https://api.bimface.com

C#開發BIMFACE系列24 服務API之獲取模型資料9:獲取單個房間資訊

系列目錄     【已更新最新開發文章,點選檢視詳細】 大廈建築模型中,基本上包含多個樓層,每個樓層包含多個房間等資訊。在《C#開發BIMFACE系列21 服務端API之獲取模型資料6:獲取單模型的樓層資訊》中介紹瞭如何獲取一個模型中包含的樓層資訊、面積分區、房間等資