Microsoft云工程师 - SharePoint,Office 365,Azure,Dotnet,Agenular,JavaScript。
Microsoft云工程师 - SharePoint,Office 365,Azure,Dotnet,Agenular,JavaScript。

杰森

使用Chrome F12 Curl(Bash)探索SharePoint REST API至邮递员

想要为如何利用F12工具创建演示来捕获SharePoint Online REST API调用并重播为REST邮递员。  允许调整HTTP标头,检查输出,并执行测试API调用。 邮递员提供存储历史,导出数据和微调API标题的好处。

利用Chrome F12使我们能够快速创建具有正确的身份验证HTTP的有效HTTP帖子 标题,cookie和端点URL。  Cheers.

shades_smile.

视频

截屏

图像
图像

参考

视频– Powerapps - 超级画廊

在PowerApps中使用Gallery Control可以是导航记录的限制方法。  许多PowerApps包括具有专用库屏幕的多个屏幕,用于导航。  帮助用户找到记录(排序,过滤器,滚动和搜索)将使用SharePoint视图更好地完成。  SharePoint列表视图具有更成熟的ad-hoc排序,过滤,搜索和保存查询(共享/ personal)并提供超链接以查看aspx页面的完整功能。

为什么不使用SharePoint视图而不是Gallery Control?

事实证明我们可以。  在SharePoint现代页面:

  1. 创造新的自定义列用简单的公式“= [id]”
  2. 申请json.自定义格式为生成链接<一个href =“... power app url..id = 1”>它打开PowerApps,为单个记录提供ID号以编辑
  3. 分享查看URL.最终用户导航记录(排序/过滤器/搜索/分页)

这给出了强大而熟悉的导航体验。 使用PowerApps进行实力(输入验证),并使用SharePoint列表的实力(导航记录)。  Cheers. 

shades_smile.

视频

Powerapps - 超级画廊杰夫琼斯Vimeo..

截图

图像
图像
图像

参考

代码– GitHub Repo

代码–Supergallery-Modern-View-Form-Column

{
  "$schema": "//developer.microsoft.com/json-schemas/sp/v2/column-formatting.schema.json",
  "elmType": "div",
  "children": [
    {
      "elmType": "a",
      "style": {
        "color": "white",
        "display": "inline-block",
        "padding": "4px",
        "background-color": "purple"
      },
      "attributes": {
        "target": "_blank",
        "href": "='//apps.powerapps.com/play/015ba39a-db14-4d5f-80a9-c23881784383?tenantId=19e61d8c-a318-488b-8d4e-33bc232b3530&source=portal&screenColor=rgba(0%2C%20176%2C%20240%2C%201)&ID=' + [$ID]"
      },
      "children": [
        {
          "elmType": "span",
          "txtContent": "VIEW FORM"
        }
      ]
    }
  ]
}

固定的–无法转换JSON字符串…包含重复的键‘Id’ and ‘ID’

最近,我在下载SharePoint 2013列表项RET API调用PowerShell时遇到了下面的错误消息。  The cmdlet 转介意json.做得很好。 但是,情况与属性名称敏感。

我发现的分辨率是第一个字符串替换(区分大小写),以重命名源属性名称之一。  Cheers! 

shades_smile.

截图 - 之前

转介意json.:无法转换JSON字符串,因为从字符串转换的字典包含重复的键‘Id’ and ‘ID’.

图像

屏幕截图 - 之后

图像

代码

cls

# Config
$web = "http://portal/sites/team"
$list = "Test"

# Digest
$urlView = "$web/_api/contextinfo"
$urlView
$req = Invoke-WebRequest $urlView -UseDefaultCredentials -UseBasicParsing -Method Post
$ctx = $req.Content
$digest = $ctx.GetContextWebInformation.FormDigestValue
$digest

# List Items
$urlItems = "$web/_api/web/lists/GetByTitle('$list')/getitems"
$json = "application/json; odata=verbose"
$headers = @{"Accept" = $json; "Content-Type" = $json; "X-RequestDigest" = $digest}
$body = '{"query":{}}'
$req = Invoke-WebRequest $urlItems -UseDefaultCredentials -UseBasicParsing -Method Post -Body $body -Headers $headers
$resp = $req.Content

### FIX - Case Sensitive Property Name Replacement ###
$resp = $resp.Replace("Id","Idd")

$json = $resp  | ConvertFrom-Json
$json

参考

视频–HTTP标头客户端秘密受保护的Web API

观看下面的视频,以查看使用HTTP标头和客户机密保护WebAPI的演示。   默认情况下,新的Web API项目缺少任何安全机制,并且对任何匿名用户都开放。   使用if()语句条件保护点网方法提供了一个简单的安全机制,以确保仅确保知道客户端秘密的用户能够运行API并执行该方法。

笔记 -查看//www.yinzigold.com/2017/10/05/video-azure-ad-protected-web-api-in-an-angularjs-spa/对于使用Azure广告的更完整的WebAPI安全性。

干杯!

shades_smile.

视频

截图

图像

代码

public bool keyMatch()
{
	// security HTTP header
	string key = "12345678901234567890123456789012345678901234567890";
	IEnumerable headerValues;
	var keyFilter = string.Empty;
	if (Request.Headers.TryGetValues("key", out headerValues))
	{
		// ALLOW - match key
		keyFilter = headerValues.FirstOrDefault();
	}
	if (keyFilter == key)
	{
		return true;
	}
	else
	{
		return false;
	}
}

参考

返回顶部▲返回顶部▲