url

RESTful6大原则及实践

旧时模样 提交于 2020-02-07 10:29:58
六大原则 1. C-S架构 数据的存储在Server端,Client端只需使用就行。两端彻底分离的好处使client端代码的可移植性变强,Server端的拓展性变强。两端单独开发,互不干扰。 2. 无状态 http请求本身就是无状态的,基于C-S架构,客户端的每一次请求带有充分的信息能够让服务端识别。请求所需的一些信息都包含在URL的查询参数、header、body,服务端能够根据请求的各种参数,无需保存客户端的状态,将响应正确返回给客户端。无状态的特征大大提高的服务端的健壮性和可拓展性。 当然这总无状态性的约束也是有缺点的,客户端的每一次请求都必须带上相同重复的信息确定自己的身份和状态(这也是必须的),造成传输数据的冗余性,但这种确定对于性能和使用来说,几乎是忽略不计的。 3.统一的接口 这个才是REST架构的核心,统一的接口对于RESTful服务非常重要。客户端只需要关注实现接口就可以,接口的可读性加强,使用人员方便调用。 4.一致的数据格式 服务端返回的数据格式要么是XML,要么是Json(获取数据),或者直接返回状态码,有兴趣的可以看看博客园的开放平台的操作数据的api,post、put、patch都是返回的一个状态码 。 自我描述的信息,每项数据应该是可以自我描述的,方便代码去处理和解析其中的内容。比如通过HTTP返回的数据里面有 [MIME type ]信息

Python爬虫:认识爬虫

你离开我真会死。 提交于 2020-02-07 08:00:50
一、爬虫的定义 定义:程序或者脚本,自动爬取万维网的数据的程序或者脚本 二、爬虫可以解决的问题 解决冷启动的问题 搜索引擎的根基,(通用爬虫) 帮助机器学习建立知识图谱 制作各种比价软件 三、爬虫工程师 初级爬虫工程师 web前端的知识:HTML、CSS、JavaSc1ipt、 DOM、 DHTML 、Ajax、jQuery、json 等; 正则表达式, 能提取正常一般网页中想要的信息,比如某些特殊的文字, 链接信息, 知道什么是懒惰, 什么是贪婪型的正则; 会使用 XPath 等获取一些DOM 结构中的节点信息; 知道什么是深度优先, 广度优先的抓取算法, 及实践中的使用规则; 能分析简单网站的结构, 会使用urllib或requests 库进行简单的数据抓取。 中级爬虫工程师 了解什么是Hash,会简单的使用MD5,sha1等算法对数据进行Hash一遍存储 熟悉HTTP,HTTPS协议的基础知识,了解GET,POST方法,了解HTTP头中的信息,包括返回状态码,编码,user-agent,cookie,session等 能设置user-agent进行数据爬取,设置代理等 知道什么是Request,什么是response,会使用Fiddler等工具抓取及分析简单地网络数据包;对于动态爬虫,要学会分析ajax请求,模拟制造post数据包请求,抓取客户端session等信息

What is the difference between a URI and URL? [duplicate]

*爱你&永不变心* 提交于 2020-02-07 07:02:24
问题 This question already has answers here : Closed 9 years ago . Possible Duplicate: What's the difference between a URI and a URL? What is a URI, and what is the difference between URL and URI? 回答1: Conceptually, a URI identifies a resource, and a URL shows you how to find it. Thus URI deals with parsing, local/absolute paths, etc. and URL deals with connecting to streams and such. 来源: https://stackoverflow.com/questions/4428196/what-is-the-difference-between-a-uri-and-url

requests包的使用

北城以北 提交于 2020-02-07 05:06:19
requests包的使用 1. 导入requests模块,几种请求方式 import requests r = requests.get(url = '...') r = requests.post(url = '...') r = requests.put(url = '...') r = requests.head(url = '...') r = requests.delete(url = '...') r = requests.options(url = '...') 简单案例:对腾讯新闻发出请求 知识点 状态码(Status Code) :(可以在网页开发者模式下的Network中找到) 状态码 意义 200 成功提供请求页面 302 服务器目前从不同位置的网页响应请求(重定向) 404 服务器找不到请求的网页 获取网页编码 使用r.encoding来检查网页的编码 import requests r = requests . get ( url = 'https://news.qq.com/' ) print ( r ) #返回了状态码,200表示成功,302表示临时移动,404表示未找到 print ( type ( r ) ) #一种状态类型 """直接查看状态码""" print ( r . status_code ) #查看状态码

angularjs ui-router 路由简介

两盒软妹~` 提交于 2020-02-07 04:59:54
ui-router 是angular的第3方路由。他与ngrouter 没有太大区别。 ui-router 可以深度嵌套 ngrouter 简单的嵌套,针对于单个视图(视图就是需要嵌套的页面) 例如:我们点击了一个链接,我们需要在视图中跳转到指定的一个页面,那么ngRoute已经满足了我们的需求,而当我们点击的时候,需要在分别在不同的地方跳转两个不同的页面的时候,ngRoute就不够用了,我们就需要用到ui-router $urlRouterProvider $urlRouterProvider负责监听$location.当$location变化的时候,$urlRouterProvider开始在一个规则的列表中一个个的查找,直到找到匹配的值。 $urlRouterProvider用于在后端指定url的状态配置。 所有的url被编译成UrlMatcher对象。 otherwise 定义一个当请求的路径是无效路径时跳转的路径,或者首次加载的时候加载指定路径 $urlRouterProvider.otherwise('/home'); 以下是一个简单的demo <script type="text/javascript"> var myapp=angular.module('route',["ui.router"]); myapp.controller('myctr',function(

微信(url.cn),新浪微博(t.cn)短网址生成api接口以及php,python的调用方法

℡╲_俬逩灬. 提交于 2020-02-07 04:29:21
微信营销中,原链接太长总是很不方便分享,转化率极低。所以我们一般使用微信短链接即url.cn的短网址或者新浪微博(t.cn)段王子样式来缩短我们的链接,再发布到微信平台进行链接分享,今天给大家分享一个微信短链接生成接口,以及微信url.cn短网址新浪t.cn短网址的生成方式。 微信url.cn短链接生成api接口: http://qingmeidwz.cn/wxshorturl.php?url_long=http://www.baidu.com 新浪t.cn短链接api接口: http://qingmeidwz.cn/shorten.json?url_long=http://www.baidu.com 使用说明: 将api接口地址中 "http://www.baidu.com"换成需要缩短的网址,然后直接复制前往浏览器中打开即可。 PHP调用演示: $url = 'http://www.baidu.com'; $api_url = 'http://qingmeidwz.cn/wxshorturl.php?url_long=http://www.baidu.com'; $short_url = file_get_contents($api_url); echo $short_url; JAVA调用演示: public static void main(String path[])

初探python爬虫(三)——cookie和session

落花浮王杯 提交于 2020-02-07 04:17:24
##什么是cookie http请求是无状态的请求协议 不会记住用户的状态和信息 也不清楚你在者这之前的访问过什么 因为网站需要记录用户是否登录时, 就需要在用户登录后创建一些信息 并且要把这些信息记录在当前用户的浏览器中, 记录的内容就是cookie 用户使用当前的这个浏览器继续访问这个服务器时,会主动携带这个网站设置的cookie信息 cookie会在浏览器中记录信息,并且在访问时懈怠这个信息 1。浏览器更换或删除cookie后,信息丢失 2.cookie在浏览器中记录的信息时不安全的,因此不能记录敏感信息 session是在服务器端进行数据的记录 并且在给每个用户生成一个sessionID, 并且把这个sessionID设置在用户的浏览器中,也就是设置为cookie import requests #定义请求的url url = 'https://i.csdn.net/#/uc/profile' #定义请求头信息 headers = { 'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.130 Safari/537.36', 'cookie': ''#这里的内容可以根据自己在登陆时查看cookie

第三方登录

家住魔仙堡 提交于 2020-02-07 03:45:17
shareSDK集成第三方登录平台   重点:流程-- 去mob官网注册->选择文档中心创建应用得到appkey等相关信息->集成 一、准备工作   1、首先去Mob官网注册你的app,http://mob.com/。   2、选择文档中心。   3、创建应用得到的App Key和App Secret。   4、集成Mob的sdk。这里是第一个坑,虽然你可以自定义下载SDK,如果你做QQ分享和登录,一定不要忘记下载QQ空间的SDK。因为QQ本身不支持第三方登录,但支持第三方分享包括QQ空间分享,QQ空间支持第三方登录,所以如果你做QQ分享和登录,一定要记得下载QQ空间的SDK。如果只做分享,那只下载QQ的就行。这里我被坑过,ShareSDK提供的文档里面没有说明。   5、添加相应的依赖库 1、 SystemConfiguration.framework、QuartzCore.framework、CoreTelephony.framework、libicucore.dylib、libz.1.2.5.dylib、Security.framework 2、以下依赖库根据社交平台添加新浪微博SDK依赖库 (从v2.10.5开始) ImageIO.framework 3、QQ好友和QQ空间SSO必要(新注册腾讯开放平台帐号只支持SSO授权,只是老开发者才可以使用网页授权) libstdc+

post方式实现导出/下载文件

六月ゝ 毕业季﹏ 提交于 2020-02-07 02:25:30
项目需求: 前端需要传入过多的参数给后端,get地址栏不行,只能接受post方式去导出数据 1、get的下载方式 通常下载方式如下: let url = xxxx.action?a=xx&b=yy; window.location.href = url; // 或者 window.open(url, '_self') 弊端:当请求参数较多时,get的方式无法使用,这时候需要考虑post的方式,但是直接通过ajax的post的方式无法调用浏览器的下载功能 2、post的下载方式 原理: 创建一个隐藏form表单,通过form表单的提交刷新功能,实现下载。代码如下: // vue项目代码 // 导出excel postExcelFile(params, url) { //params是post请求需要的参数,url是请求url地址 var form = document.createElement("form"); form.style.display = "none"; form.action = url; form.method = "post"; document.body.appendChild(form); // 动态创建input并给value赋值 for (var key in params) { var input = document.createElement(

js 文件下载,当前页下载,新标签下载____后端返回 GET/POST 文件流,下载文件

强颜欢笑 提交于 2020-02-07 02:19:36
ajax /** * Created by kjf on 2019-03-25. * * axios.request(config) axios.get(url[, config]) axios.post(url[, data[, config]]) axios.delete(url[, config]) axios.head(url[, config]) axios.options(url[, config]) axios.put(url[, data[, config]]) axios.patch(url[, data[, config]]) */ import axios from 'axios'; export default function (url, data = {}, method = 'GET', params, headers) { return new Promise((resolve, reject) => { let promise = null; if (method === 'GET') { promise = axios.get(url, {params: data, headers}); } else if (method === 'POST') { promise = axios.post(url, data, {params: params,