Laravel如何做API请求体字段经纬度校验_Laravel验证数值范围合法性【介绍】
做API请求体里经纬度字段的校验,核心就这几点:between范围要带负号,nullable要配合好;想要更严格的格式校验,自己写个Rule类更靠谱;嵌套和数组字段用点号和通配符;至于小数位数,别在验证层管,交给响应层处理。 验证经纬度字段是否在合法数值范围内 直接用 Lara vel 的 betw
做API请求体里经纬度字段的校验,核心就这几点:between范围要带负号,nullable要配合好;想要更严格的格式校验,自己写个Rule类更靠谱;嵌套和数组字段用点号和通配符;至于小数位数,别在验证层管,交给响应层处理。

验证经纬度字段是否在合法数值范围内
直接用 Lara vel 的 between 规则就能搞定,但必须注意:纬度是 -90 到 90,经度是 -180 到 180,反不得、漏负号更是大忌。很多人写成 between:0,90,结果南纬和西经全被拦在外面,这坑可不小。
- 纬度(
latitude)应校验between:-90,90 - 经度(
longitude)应校验between:-180,180 - 如果字段允许为空,加
nullable,但别加在between前面——Lara vel 会跳过后续规则,推荐写成nullable|between:-90,90 - 前端传字符串(如
"39.9042")也没问题,Lara vel 验证器会自动 cast 成 float
用自定义 Rule 类做更严格的经纬度格式校验
单纯数值范围够用吗?还不够。比如 999.999 虽然过不了 between:-90,90,但真正要防的是「看起来像数字、实则超精度或非法格式」的输入——带空格、科学计数法、NaN 这些。这时候就得自定义 Rule 了。
- 运行
php artisan make:rule ValidLatitude,在passes()里用is_numeric($value)+ 范围判断双保险 - 别用
filter_var($value, FILTER_VALIDATE_FLOAT)—— 它接受1e2这种,而地理坐标不用科学计数法 - 示例逻辑:
return is_numeric($value) && $value >= -90 && $value <= 90;
- 同理建
ValidLongitude,范围换成 -180 到 180
API 请求体里字段名不叫 latitude/longitude 怎么办
实际项目里字段名可能是 lat/lng、coord_x/coord_y,甚至嵌套在 location 数组里。验证规则得跟着结构走,否则 between 直接失效。
- 扁平字段(如
lat):规则写'lat' => 'required|between:-90,90' - 嵌套字段(如
location.lat):规则键名必须带点,写成'location.lat' => 'required|between:-90,90' - 数组字段(如
points.*.lat):用通配符,'points.*.lat' => 'required|between:-90,90' - 别在
rules()方法里硬写死字段名——提取成常量或配置项,换字段时只改一处
为什么不用正则校验经纬度小数位数
有人想用正则限制「最多 6 位小数」,比如 regex:/^-?\d{1,3}(\.\d{1,6})?$/。这看似严谨,其实没必要,还容易出错。
- GPS 设备、地图 API 返回的坐标小数位数不统一,高德可能给 13 位,Leaflet 默认显示 5 位,后端不该卡位数
- PHP 浮点数精度本身有限,
floatval("39.90420000000001")和39.9042在比较时可能被当作相等,正则反而制造假性严格 - 真要控制输出精度,放在响应层(
number_format()或 cast),不在验证层 - 唯一需要正则的场景是:字段混入非数字字符(如
"39.9042°N"),那就先用trim()和filter_var(..., FILTER_SANITIZE_NUMBER_FLOAT)预处理
Lara vel 验证经纬度真正的复杂点不在规则写法,而在字段来源不可控——API 可能被爬虫调、前端可能绕过 JS 校验、第三方系统对接时字段命名五花八门。所以规则得有容错性,验证逻辑要和存储、展示逻辑解耦。
WPS Office是一款面向macOS用户的综合办公套件,将文字处理、电子表格、演示文稿、PDF工具、模板与云协作整合在同一应用中。它兼容常见Microsoft Office格式,支持Intel及Apple芯片Mac,基础功能可免费使用,
Shapr3D是一款面向工业设计、机械工程、建筑概念和三维打印工作流的CAD软件。Mac版采用Parasolid建模内核,支持草图约束、实体建模、工程图、可视化渲染及常见CAD格式交换,并可通过账户在多台设备之间同步项目。
REAPER是Cockos开发的数字音频工作站,提供多轨音频与MIDI录制、剪辑、处理、混音和母带制作工具。Mac版兼容Intel与Apple芯片,支持AU、VST、VST3、CLAP等插件格式,并提供高度可定制的工作流程。
Adobe Photoshop 是面向摄影师、设计师和内容创作者的专业图像处理工具,可在 Windows 上完成照片修饰、选区抠图、图层合成、文字排版、绘画及生成式编辑。软件采用订阅授权,由 Creative Cloud 管理安装、更新与许
Adobe InDesign 是面向印刷与数字出版的专业页面排版工具,可制作书籍、杂志、宣传册、海报、交互式 PDF 和电子书。它提供精细的文字样式、多页面管理、印前检查及多格式输出能力,并能与 Photoshop、Illustrator
Adobe Illustrator 是用于绘制矢量图形、插画、图标、徽标和版式的专业设计工具。它以路径和锚点为核心,作品放大后仍能保持清晰,并提供画板、文字、渐变、图像描摹及精确变换等功能,适合品牌视觉、印刷物料、数字界面和商业插画创作。













