.Net Web Api——获取客户端浏览器信息

简介:         第一次接触到web api,发现这个东西是REST风格的:----         微软的web api是在vs2012上的mvc4项目绑定发行的,它提出的web api是完全基于RESTful标准的,完全不同于之前的(同是SOAP协议的)wcf和webService,它是.


        第一次接触到web api,发现这个东西是REST风格的:----


        微软的web api是在vs2012上的mvc4项目绑定发行的,它提出的web api是完全基于RESTful标准的,完全不同于之前的(同是SOAP协议的)wcf和webService,它是简单,代码可读性强的,上手快的,如果要拿它和web服务相比,我会说,它的接口更标准,更清晰,没有混乱的方法名称,有的只有几种标准的请求,如get,post,put,delete等,它们分别对应的几个操作,下面讲一下:


        GET:生到数据列表(默认),或者得到一条实体数据

        POST:添加服务端添加一条记录,记录实体为Form对象

        PUT:添加或修改服务端的一条记录,记录实体的Form对象,记录主键以GET方式进行传输

        DELETE:删除 服务端的一条记录


        因为之前看一个hybird app的接口设计,发现就是这种风格的,貌似用的很多,作为小白的我就心里mark了一下,希望能在自己项目组的hybird app的项目中用到。


       下面来写个简单web api的例子,来看下web api的使用及获取client的信息:


        1,首先建立一个web api的项目;

        2,加入controller跟model:


                  


       user类:

             

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

namespace BrowerTest.Models
{
    public class User
    {
        public int Id { get; set; }
        public String UName { get; set; }
        public int UAge { get; set; }
        public String UAddress { get; set; }

    }
}

    Controller类:


           

using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Web;
using System.Web.Http;
using System.ServiceModel;
using System.ServiceModel.Channels;



namespace BrowerTest.Controllers
{
    public class UserController : ApiController
    {
       

        public List<BrowerTest.Models.User> GetUser(HttpRequestMessage httpreq)
            
        {
           
            //返回数据
            var userList = new List<BrowerTest.Models.User> { 
            new BrowerTest.Models.User{ Id=1,UName="张三",UAge=12,UAddress="海淀区"},
            new BrowerTest.Models.User{Id=2,UName="李四",UAge=23,UAddress="昌平区"},
            new BrowerTest.Models.User{Id=3,UName="王五",UAge=34,UAddress="朝阳区"}
            };

            var temp = (from u in userList
                        select u).ToList();
            return temp;
        }
    }
}

        之后,run下看看,因为我这里没有定义路由,所以使用默认路由,访问地址为:http://****/api/controllerName/actionName  。例如:http://localhost:12333/api/user/getuser。


      3,通过HttpRequestMessage获取请求信息


           

  public class UserController : ApiController
    {
        /*
         * 获取客户端IP地址--------------
         方法说明: this version will return a string with the client IP. If it returns ::1 that means the client is requesting from the same computer as where the API is running. The query address will be something like http://yoursite/api/ip depending on your routing.
         * (此方法会返回一个IP字符;如果为“::1”表示客户端的请求来自跟api接口相同的PC机上面。)
         * 方法来源:http://www.herlitz.nu/2013/06/27/getting-the-client-ip-via-asp-net-web-api/  (国外网站,在stackoverflow上看到的)
         */
        private string GetClientIp(HttpRequestMessage request = null)
          {
                request = request ?? Request;

                if (request.Properties.ContainsKey("MS_HttpContext"))
                {
                      return   ((HttpContextWrapper)request.Properties["MS_HttpContext"]).Request.UserHostAddress;
                }
                else if (request.Properties.ContainsKey(RemoteEndpointMessageProperty.Name))
                {
                     RemoteEndpointMessageProperty prop = (RemoteEndpointMessageProperty)request.Properties[RemoteEndpointMessageProperty.Name];
                     return prop.Address;
                }
                else if (HttpContext.Current != null)
                {
                    return HttpContext.Current.Request.UserHostAddress;
                }
                else
                {
                      return null;
                }
           }
     

        public List<BrowerTest.Models.User> GetUser(HttpRequestMessage httpreq)
            
        {
           /*读取客户端信息*/
            httpreq.GetUrlHelper().ToString();
            String url=httpreq.RequestUri.ToString();//当前页面地址
            String userAagent = httpreq.Headers.UserAgent.ToString();//User-Agent全部信息:里面包含浏览器版本跟操作系统版本
            String ClientIp = GetClientIp(httpreq);//客户端IP地址


            //返回数据
            var userList = new List<BrowerTest.Models.User> { 
            new BrowerTest.Models.User{ Id=1,UName="张三",UAge=12,UAddress="海淀区"},
            new BrowerTest.Models.User{Id=2,UName="李四",UAge=23,UAddress="昌平区"},
            new BrowerTest.Models.User{Id=3,UName="王五",UAge=34,UAddress="朝阳区"}
            };

            var temp = (from u in userList
                        select u).ToList();
            return temp;
        }
    }

       

       感觉用起来跟Asp.net 的controller差不多,挺适合做接口的,还没深入研究内部原理,mark下,有空用spring mvc做个java版的。









         


目录
相关文章
|
2月前
|
开发框架 前端开发 JavaScript
ASP.NET Web Pages - 教程
ASP.NET Web Pages 是一种用于创建动态网页的开发模式,采用HTML、CSS、JavaScript 和服务器脚本。本教程聚焦于Web Pages,介绍如何使用Razor语法结合服务器端代码与前端技术,以及利用WebMatrix工具进行开发。适合初学者入门ASP.NET。
|
1月前
|
人工智能 前端开发 API
Gemini Coder:基于 Google Gemini API 的开源 Web 应用生成工具,支持实时编辑和预览
Gemini Coder 是一款基于 Google Gemini API 的 AI 应用生成工具,支持通过文本描述快速生成代码,并提供实时代码编辑和预览功能,简化开发流程。
137 38
Gemini Coder:基于 Google Gemini API 的开源 Web 应用生成工具,支持实时编辑和预览
|
21小时前
|
监控 Linux PHP
【02】客户端服务端C语言-go语言-web端PHP语言整合内容发布-优雅草网络设备监控系统-2月12日优雅草简化Centos stream8安装zabbix7教程-本搭建教程非docker搭建教程-优雅草solution
【02】客户端服务端C语言-go语言-web端PHP语言整合内容发布-优雅草网络设备监控系统-2月12日优雅草简化Centos stream8安装zabbix7教程-本搭建教程非docker搭建教程-优雅草solution
41 20
|
6天前
|
JSON API UED
商品信息API接口的设计与实现
商品信息API接口的设计与实现,遵循RESTful原则以确保高效、可维护和良好的用户体验。API支持获取、查询、创建、更新和删除商品资源,URL模式直观易懂。请求参数通过查询字符串传递,支持分页和过滤。响应体结构化,包含数据、链接和元数据字段,便于解析。错误处理采用HTTP状态码结合JSON错误描述,提供明确反馈。
|
29天前
|
开发框架 数据可视化 .NET
.NET 中管理 Web API 文档的两种方式
.NET 中管理 Web API 文档的两种方式
39 14
|
30天前
|
供应链 API 开发者
解锁电商数据的无限可能:探秘京东商品SKU信息API接口
京东商品SKU信息API接口是电商开发与运营中的重要工具,帮助开发者获取商品的详细属性,如库存、价格、规格等。通过该接口,电商平台可以丰富商品展示页面,提升用户体验;商家能实时掌握库存动态,优化销售策略;数据分析人员可深入洞察市场趋势,实现精准营销。使用前需注册京东开放平台账号、创建应用并获取API权限,同时仔细阅读API文档以确保正确调用。代码示例展示了如何用Python调用该接口,并处理返回数据。未来,该接口将在个性化推荐、智能库存管理和数据分析等领域发挥更大作用,助力电商业务创新与发展。
91 14
|
2月前
|
运维 前端开发 C#
一套以用户体验出发的.NET8 Web开源框架
一套以用户体验出发的.NET8 Web开源框架
一套以用户体验出发的.NET8 Web开源框架
|
28天前
|
JSON 监控 API
获取1688商品SKU信息API接口及实战应用
在电商蓬勃发展的今天,数据成为宝贵的财富。1688作为国内知名批发采购平台,提供商品SKU信息API接口,可获取库存、价格、规格等关键数据,助力电商运营、市场分析和价格监控。本文介绍如何注册1688开放平台账号、创建应用并获取AppKey/AppSecret,申请API权限,使用Python实现接口调用,处理响应数据,并注意请求频率限制和错误处理。通过该接口,可为电商运营和数据分析提供有力支持。
66 2
|
6天前
|
监控 关系型数据库 MySQL
【01】客户端服务端C语言-go语言-web端PHP语言整合内容发布-优雅草网络设备监控系统-硬件设备实时监控系统运营版发布-本产品基于企业级开源项目Zabbix深度二开-分步骤实现预计10篇合集-自营版
【01】客户端服务端C语言-go语言-web端PHP语言整合内容发布-优雅草网络设备监控系统-硬件设备实时监控系统运营版发布-本产品基于企业级开源项目Zabbix深度二开-分步骤实现预计10篇合集-自营版
16 0
|
30天前
|
供应链 数据挖掘 API
探秘淘宝商品SKU信息API接口
在电子商务中,SKU(库存量单位)用于区分商品的不同规格、颜色、尺寸等属性,是精细化管理的基础。本文深入探讨淘宝商品SKU信息API接口,介绍其功能特点、使用方法及应用场景,并提供Python代码示例。该API支持实时更新、多维度筛选,帮助开发者获取全面的SKU信息,优化库存管理、订单处理和销售数据分析,提升运营效率与市场竞争力。
49 1

热门文章

最新文章