AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / coding / 问题

问题[rest](coding)

Martin Hope
Kt Student
Asked: 2025-04-03 22:31:01 +0800 CST

基于 RESTful 原则构建的使用服务器会话对用户进行身份验证的 Web API 应用程序是否被视为无状态的?

  • 5

我对 REST API 中的“无状态”一词的解释感到困惑。例如,阅读这篇文章时,它有以下文字:

我要讨论的最后一个原则是无状态通信。首先,必须强调的是,尽管 REST 包含无状态的概念,但这并不意味着公开其功能的应用程序不能具有状态——事实上,在大多数情况下,这会使整个方法变得毫无用处。REST 要求将状态转换为资源状态,或保留在客户端上。换句话说,除了单个请求之外,服务器不应该为其与之通信的任何客户端保留某种通信状态。

对此,我理解该问题标题中提到的API应用程序是无状态的,因为会话用于用户身份验证(它存储用户的状态而不是应用程序状态)。

我的理解正确吗?

如果不是,那么应用程序如何使用 JWT 令牌进行身份验证,并将 JWT 存储在数据库中(在同一台服务器上或不同的服务器上),这仍然被视为无状态的吗?

rest
  • 1 个回答
  • 32 Views
Martin Hope
beasy
Asked: 2025-03-06 21:19:47 +0800 CST

当没有检索或修改任何资源时,应使用哪种 HTTP 请求类型?

  • 1

我正在实现一个 API 端点,它通过请求正文接收文本、解析它、转换为结构化数据,并在响应中将其作为 JSON 返回。

由于没有检索任何现有资源,也没有在服务器上创建或修改任何资源,我想知道应该使用哪种 HTTP 请求类型?它适用于 POST 和 GET,但从技术上讲,哪一个是正确的?

rest
  • 1 个回答
  • 42 Views
Martin Hope
Karel
Asked: 2025-02-10 21:00:15 +0800 CST

无法从 Azure DevOps API 中的自定义分析视图获取数据

  • 5

我正在尝试使用 Python 从 Azure DevOps 中的特定 Analytics 视图中检索数据。我能够列出所有可用视图,包括自定义共享/私有视图,但无法使用其 ID 从任何特定视图中获取实际数据。

我已尝试获取可用视图列表:我使用此 API 成功获取了自定义视图列表:

import requests
import pandas as pd
from requests.auth import HTTPBasicAuth

# Azure DevOps Configuration
organization = "xxx"
project = "xxx"
personal_access_token = "xxx"

# API to list Analytics Views
url = f"https://analytics.dev.azure.com/{organization}/{project}/_apis/analytics/views?api-version=7.1-preview.1"
auth = HTTPBasicAuth("", personal_access_token)

# Make API request
response = requests.get(url, auth=auth)

if response.status_code == 200:
    data = response.json()
    df = pd.DataFrame(data["value"])
    print(df[["id", "name", "description"]])  # Show relevant columns
else:
    print(f"Error fetching views: {response.status_code} {response.text}")

问题:获取视图 ID 后,我尝试使用以下方法获取数据:

view_id = "a26xxxxx-xxxx-xxx-xxxx-xxxxxxxx94b0"  # Example View ID

url = f"https://dev.azure.com/{organization}/{project}/_apis/analytics/views/{view_id}/data?api-version=7.1-preview.1"

response = requests.get(url, auth=auth)

if response.status_code == 200:
    data = response.json()
    df = pd.DataFrame(data["value"])
    print(df.head())
else:
    print(f"Error fetching data from view: {response.status_code} {response.text}")

即使视图 ID 正确(从列表 API 验证),请求也会失败。

Error fetching data from view: 404
The controller for path '/xxx/_apis/analytics/views/a26xxxxx-xxxx-xxx-xxxx-xxxxxxxx94b0/data' was not found or does not implement IController.

我尝试调试的内容

  • 在浏览器中检查 API - /analytics/views 端点正确列出了视图,但直接 /analytics/views/{view_id}/data 返回 404。
  • 已验证的权限 - 我有分析视图的完全访问权限,并且可以在 Power BI 中加载它们。
  • 检查视图是否为私有的 - 我尝试从 /analytics/views/PrivateViews 获取,但错误仍然存​​在。
  • 尝试使用 OData – OData API 返回默认数据集,但未列出私有/自定义视图。

我需要什么帮助

  • 是否有不同的 API 可以从自定义视图中获取数据?
  • Power BI 如何使用 VSTS.AnalyticsViews 在内部访问这些视图?
  • 还有其他方法可以通过 OData 查询这些视图吗?
  • 我在 API 调用中是否缺少任何必需的参数?
rest
  • 1 个回答
  • 31 Views
Martin Hope
hubatish
Asked: 2024-11-06 04:14:36 +0800 CST

REST API - “:word”(例如“:predict”)与“:port”(例如“:1000”)这叫什么?[重复]

  • 2
此问题这里已有答案:
URL 中允许使用冒号吗? (3 个回答)
23 小时前关闭。

Tensorflow REST URL 端点如下所示:http://host:port/v1/models/${MODEL_NAME}[/versions/${VERSION}|/labels/${LABEL}]:predict

URL 以“:predict”结尾,而不是我期望的数字/端口“:1000”。为什么这样做有效?是否有其他示例 URL 端点使用这种单词模式而不是数字模式?我在谷歌上搜索这个概念时遇到了困难,所以如果 stackoverflow 可以指出我遗漏的词汇术语,我将不胜感激。

rest
  • 1 个回答
  • 33 Views
Martin Hope
ultimateraman
Asked: 2024-10-19 04:33:28 +0800 CST

防止由 Quartz Scheduler 和 REST 调用触发的方法并行执行

  • 5

我有一个 Quartz Scheduler,每小时调用一次我的 configUpdate 方法。但是,此方法也可以通过控制器中的 REST API 调用来调用。由于此方法复杂且异步,因此我想确保它永远不会并发运行,无论它是由调度程序还是 REST 调用触发。

我有哪些选择可以实现这一目标?

rest
  • 1 个回答
  • 24 Views
Martin Hope
poizdev
Asked: 2024-10-17 05:49:58 +0800 CST

我通过 Golang Gin 使用的 RESTful API 发送了一个“{}”值

  • 6

import (
    "net/http"

    "github.com/gin-gonic/gin"
)

type ogrenci struct {
    ogrenciNo   string `json:"ogrenciNo"`
    ogrenciAdi  string `json:"ogrenciAdi"`
    ogrenciRolu string `json:"ogrenciRolu"`
}

type ogretmen struct {
    ogretmenID   string `json:"ogretmenID"`
    ogretmenAdi  string `json:"ogretmenAdi"`
    ogretmenRolu string `json:"ogretmenRolu"`
    zumreBaskani bool   `json:"zumreBaskani"`
}

var ogrenciler = []ogrenci{
    {ogrenciNo: "2000", ogrenciAdi: "poiz", ogrenciRolu: "Görevli Öğrenci"},
    {ogrenciNo: "2001", ogrenciAdi: "sema", ogrenciRolu: "Görevli Öğrenci"},
    {ogrenciNo: "2002", ogrenciAdi: "sena", ogrenciRolu: "Öğrenci"},
}

var ogretmenler = []ogretmen{
    {ogretmenID: "1", ogretmenAdi: "serkan", ogretmenRolu: "Teknik Öğretmen", zumreBaskani: true},
    {ogretmenID: "2", ogretmenAdi: "furkan", ogretmenRolu: "Teknik Öğretmen", zumreBaskani: false},
    {ogretmenID: "3", ogretmenAdi: "atlas", ogretmenRolu: "Edebiyat Öğretmeni", zumreBaskani: true},
}

func ogrencileriAl(c *gin.Context) {
    c.IndentedJSON(http.StatusOK, ogrenciler)
}

func ogretmenleriAl(c *gin.Context) {
    c.IndentedJSON(http.StatusOK, ogretmenler)
}

func ogrenciSec(c *gin.Context) {
    ogrenciNo := c.Param("ogrenciNo")
    for _, o := range ogrenciler {
        if o.ogrenciNo == ogrenciNo {
            c.IndentedJSON(http.StatusOK, o)
            return
        }
    }
    c.IndentedJSON(http.StatusNotFound, gin.H{"Mesaj": "Öğrenci Bulunamadı"})
}

func ogretmenSec(c *gin.Context) {
    ogretmenID := c.Param("ogretmenID")
    for _, o := range ogretmenler {
        if o.ogretmenID == ogretmenID {
            c.IndentedJSON(http.StatusOK, o)
            return
        }
    }
    c.IndentedJSON(http.StatusNotFound, gin.H{"Mesaj": "Öğretmen Bulunamadı"})
}

func main() {
    router := gin.Default()

    router.GET("/ogrenciler", ogrencileriAl)
    router.GET("/ogrenciler/:ogrenciNo", ogrenciSec)
    router.GET("/ogretmenler", ogretmenleriAl)
    router.GET("/ogretmenler/:ogretmenID", ogretmenSec)

    router.Run(`localhost:8080`)
}

这是我的代码,朋友们,问题是每次我尝试提取数据时,当我尝试提取所有数据或单个数据时,我都会得到 {} 个空数据。当我查看时,我找不到或尝试解决方案,我只想打印数据。

我认为我有点缺乏经验,因为这是我用 Go 做的第一个项目之一,我也可以请你解释解决方案。我对这种语言还不熟悉。

rest
  • 1 个回答
  • 22 Views
Martin Hope
RWC
Asked: 2024-09-18 07:09:51 +0800 CST

Business Central 中的自定义 API 不支持 GET 请求。“BadRequest_MethodNotAllowed”

  • 5

我尝试在Ms Dynamics 365 Business Central中的代码单元中调用自定义 API 中的方法。我尽一切努力使其成为一个简单的 GET 方法,但我在 Postman 中不断收到“ BadRequest_MethodNotAllowed ”。

完整回应:

{
"error": {
    "code": "BadRequest_MethodNotAllowed",
    "message": "'GET' requests on unbound actions are not allowed."
    }
}

当我使用 POST 请求(在 Postman 中)调用该方法时,它按预期工作。对我来说,当我的 API 调用者想要从我的 API获取一些数据时,他需要使用POST,这似乎很荒谬。这当然也违反了官方指南和惯例。我遗漏了什么吗?请提供一些建议。谢谢。

rest
  • 1 个回答
  • 26 Views
Martin Hope
vladimir_1969_2
Asked: 2024-08-01 17:17:03 +0800 CST

REST URL 设计注意事项

  • 5

我负责为一个相对较小的应用设计路由系统(以及 URL 结构)。应用本身应提供添加“根”级实体的功能以及从父级上下文添加子(嵌套)实体的能力。

考虑以下示例设置:

  • 根实体:Dogs。
  • 子实体:Vaccinations

我有以下 UI 路由(BE 路由很容易,因为它总是平坦的,而且我可以利用 VERB 来发挥我的优势):

注意:获得超过 1 级嵌套的机会非常小,但如果它们实现,则可能会成为一个问题......

根级别:

  • 得到: /dogs?param1=value1&...
  • 邮政: /dogs/add
  • 放: /dogs/10/update
  • 删除 /dogs/10/delete
  • 风俗 /dogs/10/custom

嵌套级别:

  • 得到: /dogs/10/vaccinations?param1=value1&...
  • 邮政: /dogs/10/vaccinations/add
  • 放: /dogs/10/vaccinations/25/update
  • 删除:/dogs/10/vaccinations/25/delete
  • 风俗:/dogs/10/vaccinations/25/custom

虽然这对我来说有效,但我可以看到另一种可行的方法,即:

/dogs/10/vaccinations/25/add

人们会使用:

/dogs/10/addvaccination/25

这会导致 URL 稍微变短,但会产生与脱离资源符号相关的处理开销 - 即addvaccination需要收敛到vaccinations+ add。

我知道 REST 只是一套建议,所以我想看看人们对我最初的方法有何看法,并可能收集任何其他关注/建议。

rest
  • 1 个回答
  • 23 Views
Martin Hope
M_droid
Asked: 2024-03-20 06:01:55 +0800 CST

Heroku 不提供媒体字段

  • 5

我使用 heroku 设置了 Strapi 并创建了我的第一个内容(带有标题、富文本描述和封面图像媒体文件的博客文章)。当我进行 API 调用时,https://mybackend.....herokuapp.com/api/posts我会收到标题和描述,但类型=媒体的封面字段不会被传递。顺便说一句,我是后端开发的新手,所以我可能完全错过了一些对于知情者来说可能完全显而易见的东西。

rest
  • 1 个回答
  • 10 Views
Martin Hope
J.J. Beam
Asked: 2024-02-20 21:11:44 +0800 CST

为什么 Kafka 被认为比 REST 更稳定?

  • 5

为什么 Kafka 被认为比 REST 更稳定,REST 响应的概念与 Kafka 中的确认概念不一样吗?

rest
  • 2 个回答
  • 27 Views

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    重新格式化数字,在固定位置插入分隔符

    • 6 个回答
  • Marko Smith

    为什么 C++20 概念会导致循环约束错误,而老式的 SFINAE 不会?

    • 2 个回答
  • Marko Smith

    VScode 自动卸载扩展的问题(Material 主题)

    • 2 个回答
  • Marko Smith

    Vue 3:创建时出错“预期标识符但发现‘导入’”[重复]

    • 1 个回答
  • Marko Smith

    具有指定基础类型但没有枚举器的“枚举类”的用途是什么?

    • 1 个回答
  • Marko Smith

    如何修复未手动导入的模块的 MODULE_NOT_FOUND 错误?

    • 6 个回答
  • Marko Smith

    `(表达式,左值) = 右值` 在 C 或 C++ 中是有效的赋值吗?为什么有些编译器会接受/拒绝它?

    • 3 个回答
  • Marko Smith

    在 C++ 中,一个不执行任何操作的空程序需要 204KB 的堆,但在 C 中则不需要

    • 1 个回答
  • Marko Smith

    PowerBI 目前与 BigQuery 不兼容:Simba 驱动程序与 Windows 更新有关

    • 2 个回答
  • Marko Smith

    AdMob:MobileAds.initialize() - 对于某些设备,“java.lang.Integer 无法转换为 java.lang.String”

    • 1 个回答
  • Martin Hope
    Fantastic Mr Fox msvc std::vector 实现中仅不接受可复制类型 2025-04-23 06:40:49 +0800 CST
  • Martin Hope
    Howard Hinnant 使用 chrono 查找下一个工作日 2025-04-21 08:30:25 +0800 CST
  • Martin Hope
    Fedor 构造函数的成员初始化程序可以包含另一个成员的初始化吗? 2025-04-15 01:01:44 +0800 CST
  • Martin Hope
    Petr Filipský 为什么 C++20 概念会导致循环约束错误,而老式的 SFINAE 不会? 2025-03-23 21:39:40 +0800 CST
  • Martin Hope
    Catskul C++20 是否进行了更改,允许从已知绑定数组“type(&)[N]”转换为未知绑定数组“type(&)[]”? 2025-03-04 06:57:53 +0800 CST
  • Martin Hope
    Stefan Pochmann 为什么 {2,3,10} 和 {x,3,10} (x=2) 的顺序不同? 2025-01-13 23:24:07 +0800 CST
  • Martin Hope
    Chad Feller 在 5.2 版中,bash 条件语句中的 [[ .. ]] 中的分号现在是可选的吗? 2024-10-21 05:50:33 +0800 CST
  • Martin Hope
    Wrench 为什么双破折号 (--) 会导致此 MariaDB 子句评估为 true? 2024-05-05 13:37:20 +0800 CST
  • Martin Hope
    Waket Zheng 为什么 `dict(id=1, **{'id': 2})` 有时会引发 `KeyError: 'id'` 而不是 TypeError? 2024-05-04 14:19:19 +0800 CST
  • Martin Hope
    user924 AdMob:MobileAds.initialize() - 对于某些设备,“java.lang.Integer 无法转换为 java.lang.String” 2024-03-20 03:12:31 +0800 CST

热门标签

python javascript c++ c# java typescript sql reactjs html

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve